update typescript and remove reflect-metadata lib
This commit is contained in:
parent
4d80048d60
commit
0633c1c19d
@ -222,7 +222,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.x = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "right", {
|
||||
@ -232,7 +232,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.x = v - this.width;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "top", {
|
||||
@ -242,7 +242,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.y = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "bottom", {
|
||||
@ -252,7 +252,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.y = v - this.height;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "centerX", {
|
||||
@ -262,7 +262,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.x = v - this.width / 2;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "centerY", {
|
||||
@ -272,7 +272,7 @@ var View = /** @class */ (function () {
|
||||
set: function (v) {
|
||||
this.y = v - this.height / 2;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(View.prototype, "dirtyProps", {
|
||||
@ -280,7 +280,7 @@ var View = /** @class */ (function () {
|
||||
get: function () {
|
||||
return this.__dirty_props__;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
View.prototype.onPropertyChanged = function (propKey, oldV, newV) {
|
||||
@ -1396,7 +1396,7 @@ var ScaleAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.scaleXChangeable.fromValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(ScaleAnimation.prototype, "toScaleX", {
|
||||
@ -1406,7 +1406,7 @@ var ScaleAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.scaleXChangeable.toValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(ScaleAnimation.prototype, "fromScaleY", {
|
||||
@ -1416,7 +1416,7 @@ var ScaleAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.scaleYChangeable.fromValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(ScaleAnimation.prototype, "toScaleY", {
|
||||
@ -1426,7 +1426,7 @@ var ScaleAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.scaleYChangeable.toValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
return ScaleAnimation;
|
||||
@ -1456,7 +1456,7 @@ var TranslationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.translationXChangeable.fromValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(TranslationAnimation.prototype, "toTranslationX", {
|
||||
@ -1466,7 +1466,7 @@ var TranslationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.translationXChangeable.toValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(TranslationAnimation.prototype, "fromTranslationY", {
|
||||
@ -1476,7 +1476,7 @@ var TranslationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.translationYChangeable.fromValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(TranslationAnimation.prototype, "toTranslationY", {
|
||||
@ -1486,7 +1486,7 @@ var TranslationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.translationYChangeable.toValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
return TranslationAnimation;
|
||||
@ -1510,7 +1510,7 @@ var RotationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.rotationChaneable.fromValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(RotationAnimation.prototype, "toRotation", {
|
||||
@ -1520,7 +1520,7 @@ var RotationAnimation = /** @class */ (function (_super) {
|
||||
set: function (v) {
|
||||
this.rotationChaneable.toValue = v;
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
return RotationAnimation;
|
||||
@ -1541,7 +1541,7 @@ var AnimationSet = /** @class */ (function () {
|
||||
this._duration = v;
|
||||
this.animations.forEach(function (e) { return e.duration = v; });
|
||||
},
|
||||
enumerable: true,
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
AnimationSet.prototype.toModel = function () {
|
||||
@ -1927,8 +1927,7 @@ var List = /** @class */ (function (_super) {
|
||||
}
|
||||
};
|
||||
List.prototype.scrollToItem = function (context, index, config) {
|
||||
var _a;
|
||||
var animated = (_a = config) === null || _a === void 0 ? void 0 : _a.animated;
|
||||
var animated = config === null || config === void 0 ? void 0 : config.animated;
|
||||
return this.nativeChannel(context, 'scrollToItem')({ index: index, animated: animated, });
|
||||
};
|
||||
List.prototype.reset = function () {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1705,7 +1705,7 @@ var doric = (function (exports) {
|
||||
(module.exports = function (key, value) {
|
||||
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
||||
})('versions', []).push({
|
||||
version: '3.6.4',
|
||||
version: '3.6.5',
|
||||
mode: 'global',
|
||||
copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
|
||||
});
|
||||
@ -6489,7 +6489,13 @@ var doric = (function (exports) {
|
||||
defer = functionBindContext(port.postMessage, port, 1);
|
||||
// Browsers with postMessage, skip WebWorkers
|
||||
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
|
||||
} else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post)) {
|
||||
} else if (
|
||||
global_1.addEventListener &&
|
||||
typeof postMessage == 'function' &&
|
||||
!global_1.importScripts &&
|
||||
!fails(post) &&
|
||||
location.protocol !== 'file:'
|
||||
) {
|
||||
defer = post;
|
||||
global_1.addEventListener('message', listener, false);
|
||||
// IE8-
|
||||
@ -9861,7 +9867,7 @@ var doric = (function (exports) {
|
||||
var INVALID_PORT = 'Invalid port';
|
||||
|
||||
var ALPHA = /[A-Za-z]/;
|
||||
var ALPHANUMERIC = /[\d+\-.A-Za-z]/;
|
||||
var ALPHANUMERIC = /[\d+-.A-Za-z]/;
|
||||
var DIGIT = /\d/;
|
||||
var HEX_START = /^(0x|0X)/;
|
||||
var OCT = /^[0-7]+$/;
|
||||
@ -11672,8 +11678,8 @@ var doric = (function (exports) {
|
||||
if (cleanup != null) { subscriptionState.cleanup = typeof cleanup.unsubscribe === 'function'
|
||||
? function () { subscription.unsubscribe(); }
|
||||
: aFunction$1(cleanup); }
|
||||
} catch (error) {
|
||||
subscriptionObserver.error(error);
|
||||
} catch (error$1) {
|
||||
subscriptionObserver.error(error$1);
|
||||
return;
|
||||
} if (subscriptionClosed(subscriptionState)) { cleanupSubscription(subscriptionState); }
|
||||
};
|
||||
@ -13173,7 +13179,7 @@ var doric = (function (exports) {
|
||||
// some Chrome versions have non-configurable methods on DOMTokenList
|
||||
if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) { try {
|
||||
createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]);
|
||||
} catch (error) {
|
||||
} catch (error$1) {
|
||||
CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME];
|
||||
} }
|
||||
} }
|
||||
|
File diff suppressed because it is too large
Load Diff
31
doric-js/index.d.ts
vendored
31
doric-js/index.d.ts
vendored
@ -1,6 +1,4 @@
|
||||
// Generated by dts-bundle v0.7.3
|
||||
// Dependencies for this module:
|
||||
// reflect-metadata
|
||||
|
||||
declare module 'doric' {
|
||||
export * from 'doric/lib/src/runtime/global';
|
||||
@ -12,7 +10,6 @@ declare module 'doric' {
|
||||
}
|
||||
|
||||
declare module 'doric/lib/src/runtime/global' {
|
||||
export * from 'reflect-metadata';
|
||||
export type BridgeContext = {
|
||||
/**
|
||||
* The identify of current context
|
||||
@ -739,21 +736,21 @@ declare module 'doric/lib/src/native/modal' {
|
||||
alert: (arg: string | {
|
||||
title: string;
|
||||
msg: string;
|
||||
okLabel?: string | undefined;
|
||||
okLabel?: string;
|
||||
}) => Promise<any>;
|
||||
confirm: (arg: string | {
|
||||
title: string;
|
||||
msg: string;
|
||||
okLabel?: string | undefined;
|
||||
cancelLabel?: string | undefined;
|
||||
okLabel?: string;
|
||||
cancelLabel?: string;
|
||||
}) => Promise<any>;
|
||||
prompt: (arg: {
|
||||
title?: string | undefined;
|
||||
msg?: string | undefined;
|
||||
okLabel?: string | undefined;
|
||||
cancelLabel?: string | undefined;
|
||||
text?: string | undefined;
|
||||
defaultText?: string | undefined;
|
||||
title?: string;
|
||||
msg?: string;
|
||||
okLabel?: string;
|
||||
cancelLabel?: string;
|
||||
text?: string;
|
||||
defaultText?: string;
|
||||
}) => Promise<string>;
|
||||
};
|
||||
}
|
||||
@ -851,10 +848,10 @@ declare module 'doric/lib/src/native/notification' {
|
||||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||||
export function notification(context: BridgeContext): {
|
||||
publish: (args: {
|
||||
biz?: string | undefined;
|
||||
biz?: string;
|
||||
name: string;
|
||||
data?: object | undefined;
|
||||
androidSystem?: boolean | undefined;
|
||||
data?: object;
|
||||
androidSystem?: boolean;
|
||||
}) => Promise<any>;
|
||||
subscribe: (args: {
|
||||
biz?: string | undefined;
|
||||
@ -889,14 +886,14 @@ declare module 'doric/lib/src/native/coordinator' {
|
||||
import { Color } from "doric/lib/src/util/color";
|
||||
export function coordinator(context: BridgeContext): {
|
||||
verticalScrolling: (argument: {
|
||||
scrollable: List | Scroller | FlowLayout;
|
||||
scrollable: Scroller | List | FlowLayout;
|
||||
scrollRange: {
|
||||
start: number;
|
||||
end: number;
|
||||
};
|
||||
target: View | "NavBar";
|
||||
changing: {
|
||||
name: "width" | "height" | "x" | "y" | "backgroundColor" | "alpha";
|
||||
name: "backgroundColor" | "width" | "height" | "x" | "y" | "alpha";
|
||||
start: number | Color;
|
||||
end: number | Color;
|
||||
};
|
||||
|
@ -1,3 +1,19 @@
|
||||
/*
|
||||
* Copyright [2019] [Doric.Pub]
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
export * from './src/runtime/global';
|
||||
export * from './src/ui/index.ui';
|
||||
export * from "./src/widget/index.widget";
|
||||
export * from './src/native/index.native';
|
||||
|
4
doric-js/lib/src/native/coordinator.d.ts
vendored
4
doric-js/lib/src/native/coordinator.d.ts
vendored
@ -6,14 +6,14 @@ import { View } from "../ui/view";
|
||||
import { Color } from "../util/color";
|
||||
export declare function coordinator(context: BridgeContext): {
|
||||
verticalScrolling: (argument: {
|
||||
scrollable: List | Scroller | FlowLayout;
|
||||
scrollable: Scroller | List | FlowLayout;
|
||||
scrollRange: {
|
||||
start: number;
|
||||
end: number;
|
||||
};
|
||||
target: View | "NavBar";
|
||||
changing: {
|
||||
name: "width" | "height" | "x" | "y" | "backgroundColor" | "alpha";
|
||||
name: "backgroundColor" | "width" | "height" | "x" | "y" | "alpha";
|
||||
start: number | Color;
|
||||
end: number | Color;
|
||||
};
|
||||
|
18
doric-js/lib/src/native/modal.d.ts
vendored
18
doric-js/lib/src/native/modal.d.ts
vendored
@ -5,20 +5,20 @@ export declare function modal(context: BridgeContext): {
|
||||
alert: (arg: string | {
|
||||
title: string;
|
||||
msg: string;
|
||||
okLabel?: string | undefined;
|
||||
okLabel?: string;
|
||||
}) => Promise<any>;
|
||||
confirm: (arg: string | {
|
||||
title: string;
|
||||
msg: string;
|
||||
okLabel?: string | undefined;
|
||||
cancelLabel?: string | undefined;
|
||||
okLabel?: string;
|
||||
cancelLabel?: string;
|
||||
}) => Promise<any>;
|
||||
prompt: (arg: {
|
||||
title?: string | undefined;
|
||||
msg?: string | undefined;
|
||||
okLabel?: string | undefined;
|
||||
cancelLabel?: string | undefined;
|
||||
text?: string | undefined;
|
||||
defaultText?: string | undefined;
|
||||
title?: string;
|
||||
msg?: string;
|
||||
okLabel?: string;
|
||||
cancelLabel?: string;
|
||||
text?: string;
|
||||
defaultText?: string;
|
||||
}) => Promise<string>;
|
||||
};
|
||||
|
6
doric-js/lib/src/native/notification.d.ts
vendored
6
doric-js/lib/src/native/notification.d.ts
vendored
@ -1,10 +1,10 @@
|
||||
import { BridgeContext } from "../runtime/global";
|
||||
export declare function notification(context: BridgeContext): {
|
||||
publish: (args: {
|
||||
biz?: string | undefined;
|
||||
biz?: string;
|
||||
name: string;
|
||||
data?: object | undefined;
|
||||
androidSystem?: boolean | undefined;
|
||||
data?: object;
|
||||
androidSystem?: boolean;
|
||||
}) => Promise<any>;
|
||||
subscribe: (args: {
|
||||
biz?: string | undefined;
|
||||
|
1
doric-js/lib/src/runtime/global.d.ts
vendored
1
doric-js/lib/src/runtime/global.d.ts
vendored
@ -1,4 +1,3 @@
|
||||
export * from 'reflect-metadata';
|
||||
export declare type BridgeContext = {
|
||||
/**
|
||||
* The identify of current context
|
||||
|
@ -33,228 +33,232 @@ export function NativeCall(target, propertyKey, descriptor) {
|
||||
};
|
||||
return descriptor;
|
||||
}
|
||||
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);
|
||||
let Panel = /** @class */ (() => {
|
||||
class Panel {
|
||||
constructor() {
|
||||
this.destroyed = false;
|
||||
this.__root__ = new Root;
|
||||
this.headviews = new Map;
|
||||
this.onRenderFinishedCallback = [];
|
||||
this.__rendering__ = false;
|
||||
}
|
||||
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)) {
|
||||
onCreate() { }
|
||||
onDestroy() { }
|
||||
onShow() { }
|
||||
onHidden() { }
|
||||
addHeadView(type, v) {
|
||||
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;
|
||||
map.set(v.viewId, v);
|
||||
}
|
||||
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();
|
||||
}
|
||||
map = new Map;
|
||||
map.set(v.viewId, v);
|
||||
this.headviews.set(type, map);
|
||||
}
|
||||
}
|
||||
}
|
||||
hookAfterNativeCall() {
|
||||
if (this.destroyed) {
|
||||
return;
|
||||
allHeadViews() {
|
||||
return this.headviews.values();
|
||||
}
|
||||
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));
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Promise.resolve().then(() => {
|
||||
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;
|
||||
}
|
||||
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));
|
||||
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();
|
||||
});
|
||||
}
|
||||
}
|
||||
if (this.__rendering__) {
|
||||
//skip
|
||||
Promise.all(promises).then(_ => {
|
||||
onRenderFinished() {
|
||||
this.onRenderFinishedCallback.forEach(e => {
|
||||
e();
|
||||
});
|
||||
this.onRenderFinishedCallback.length = 0;
|
||||
}
|
||||
else {
|
||||
this.__rendering__ = true;
|
||||
Promise.all(promises).then(_ => {
|
||||
this.__rendering__ = false;
|
||||
this.onRenderFinished();
|
||||
});
|
||||
addOnRenderFinishedCallback(cb) {
|
||||
this.onRenderFinishedCallback.push(cb);
|
||||
}
|
||||
}
|
||||
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);
|
||||
__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 };
|
||||
|
@ -13,263 +13,267 @@ import { loge } from "../util/log";
|
||||
export function Property(target, propKey) {
|
||||
Reflect.defineMetadata(propKey, true, target);
|
||||
}
|
||||
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);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
});
|
||||
}
|
||||
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 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);
|
||||
}
|
||||
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,
|
||||
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 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);
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
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 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);
|
||||
}
|
||||
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", Object)
|
||||
], View.prototype, "flexConfig", void 0);
|
||||
__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", Object)
|
||||
], View.prototype, "flexConfig", void 0);
|
||||
return View;
|
||||
})();
|
||||
export { View };
|
||||
export class Superview extends View {
|
||||
subviewById(id) {
|
||||
for (let v of this.allSubviews()) {
|
||||
|
@ -1,57 +1,61 @@
|
||||
/**
|
||||
* Store color as format AARRGGBB or RRGGBB
|
||||
*/
|
||||
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}`);
|
||||
let Color = /** @class */ (() => {
|
||||
class Color {
|
||||
constructor(v) {
|
||||
this._value = 0;
|
||||
this._value = v | 0x0;
|
||||
}
|
||||
const val = parseInt(str.substr(1), 16);
|
||||
if (str.length === 7) {
|
||||
return new Color(val | 0xff000000);
|
||||
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}`);
|
||||
}
|
||||
}
|
||||
else if (str.length === 9) {
|
||||
return new Color(val);
|
||||
static safeParse(str, defVal = Color.TRANSPARENT) {
|
||||
let color = defVal;
|
||||
try {
|
||||
color = Color.parse(str);
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
finally {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new Error(`Parse color error with ${str}`);
|
||||
alpha(v) {
|
||||
v = v * 255;
|
||||
return new Color((this._value & 0xffffff) | ((v & 0xff) << 24));
|
||||
}
|
||||
toModel() {
|
||||
return this._value;
|
||||
}
|
||||
}
|
||||
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);
|
||||
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 };
|
||||
export var GradientOrientation;
|
||||
(function (GradientOrientation) {
|
||||
/** draw the gradient from the top to the bottom */
|
||||
|
@ -5,29 +5,33 @@ var ValueType;
|
||||
ValueType[ValueType["Percent"] = 2] = "Percent";
|
||||
ValueType[ValueType["Auto"] = 3] = "Auto";
|
||||
})(ValueType || (ValueType = {}));
|
||||
export class FlexTypedValue {
|
||||
constructor(type) {
|
||||
this.value = 0;
|
||||
this.type = type;
|
||||
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,
|
||||
};
|
||||
}
|
||||
}
|
||||
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);
|
||||
FlexTypedValue.Auto = new FlexTypedValue(ValueType.Auto);
|
||||
return FlexTypedValue;
|
||||
})();
|
||||
export { FlexTypedValue };
|
||||
export var FlexDirection;
|
||||
(function (FlexDirection) {
|
||||
FlexDirection[FlexDirection["COLUMN"] = 0] = "COLUMN";
|
||||
|
@ -10,64 +10,68 @@ 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;
|
||||
export class Gravity {
|
||||
constructor() {
|
||||
this.val = 0;
|
||||
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;
|
||||
}
|
||||
}
|
||||
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();
|
||||
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 };
|
||||
export function gravity() {
|
||||
return new Gravity;
|
||||
}
|
||||
|
@ -25,12 +25,16 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
import { Property, View } from "../ui/view";
|
||||
import { Stack } from "../widget/layouts";
|
||||
import { layoutConfig } from "../util/layoutconfig";
|
||||
export class Draggable extends Stack {
|
||||
}
|
||||
__decorate([
|
||||
Property,
|
||||
__metadata("design:type", Function)
|
||||
], Draggable.prototype, "onDrag", void 0);
|
||||
let Draggable = /** @class */ (() => {
|
||||
class Draggable extends Stack {
|
||||
}
|
||||
__decorate([
|
||||
Property,
|
||||
__metadata("design:type", Function)
|
||||
], Draggable.prototype, "onDrag", void 0);
|
||||
return Draggable;
|
||||
})();
|
||||
export { Draggable };
|
||||
export function draggable(views, config) {
|
||||
const ret = new Draggable;
|
||||
ret.layoutConfig = layoutConfig().fit();
|
||||
|
@ -25,105 +25,113 @@ 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';
|
||||
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;
|
||||
let FlowLayoutItem = /** @class */ (() => {
|
||||
class FlowLayoutItem extends Stack {
|
||||
}
|
||||
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) {
|
||||
__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;
|
||||
this.ignoreDirtyCallOnce = false;
|
||||
//Ignore the dirty call once.
|
||||
return false;
|
||||
this.columnCount = 2;
|
||||
this.itemCount = 0;
|
||||
this.batchCount = 15;
|
||||
}
|
||||
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;
|
||||
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();
|
||||
}
|
||||
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);
|
||||
__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 };
|
||||
export function flowlayout(config) {
|
||||
const ret = new FlowLayout;
|
||||
for (let key in config) {
|
||||
|
@ -31,73 +31,77 @@ export var ScaleType;
|
||||
ScaleType[ScaleType["ScaleAspectFit"] = 1] = "ScaleAspectFit";
|
||||
ScaleType[ScaleType["ScaleAspectFill"] = 2] = "ScaleAspectFill";
|
||||
})(ScaleType || (ScaleType = {}));
|
||||
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);
|
||||
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 function image(config) {
|
||||
const ret = new Image;
|
||||
ret.layoutConfig = layoutConfig().fit();
|
||||
|
@ -26,63 +26,67 @@ import { View, Property } from "../ui/view";
|
||||
import { Color } from "../util/color";
|
||||
import { Gravity } from "../util/gravity";
|
||||
import { layoutConfig } from "../util/index.util";
|
||||
export class Input extends View {
|
||||
getText(context) {
|
||||
return this.nativeChannel(context, 'getText')();
|
||||
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')();
|
||||
}
|
||||
}
|
||||
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", 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);
|
||||
__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", 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 };
|
||||
export function input(config) {
|
||||
const ret = new Input;
|
||||
ret.layoutConfig = layoutConfig().just();
|
||||
|
@ -29,16 +29,19 @@ export class Stack extends Group {
|
||||
}
|
||||
export class Root extends Stack {
|
||||
}
|
||||
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);
|
||||
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;
|
||||
})();
|
||||
export class VLayout extends LinearLayout {
|
||||
}
|
||||
export class HLayout extends LinearLayout {
|
||||
|
@ -25,101 +25,108 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
import { View, Property, Superview } from "../ui/view";
|
||||
import { Stack } from "./layouts";
|
||||
import { layoutConfig } from "../util/layoutconfig";
|
||||
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;
|
||||
let ListItem = /** @class */ (() => {
|
||||
class ListItem extends Stack {
|
||||
}
|
||||
allSubviews() {
|
||||
if (this.loadMoreView) {
|
||||
return [...this.cachedViews.values(), this.loadMoreView];
|
||||
}
|
||||
else {
|
||||
return this.cachedViews.values();
|
||||
}
|
||||
}
|
||||
scrollToItem(context, index, config) {
|
||||
var _a;
|
||||
const animated = (_a = config) === null || _a === void 0 ? void 0 : _a.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) {
|
||||
__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;
|
||||
this.ignoreDirtyCallOnce = false;
|
||||
//Ignore the dirty call once.
|
||||
return false;
|
||||
this.itemCount = 0;
|
||||
this.batchCount = 15;
|
||||
}
|
||||
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;
|
||||
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();
|
||||
}
|
||||
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);
|
||||
__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 };
|
||||
export function list(config) {
|
||||
const ret = new List;
|
||||
for (let key in config) {
|
||||
|
@ -23,18 +23,22 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { Group, Property } from '../ui/view';
|
||||
export class NestedSlider extends Group {
|
||||
addSlideItem(view) {
|
||||
this.addChild(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")();
|
||||
}
|
||||
}
|
||||
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);
|
||||
__decorate([
|
||||
Property,
|
||||
__metadata("design:type", Function)
|
||||
], NestedSlider.prototype, "onPageSlided", void 0);
|
||||
return NestedSlider;
|
||||
})();
|
||||
export { NestedSlider };
|
||||
|
@ -9,36 +9,40 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
};
|
||||
import { Property, Superview } from "../ui/view";
|
||||
import { layoutConfig } from "../util/layoutconfig";
|
||||
export class Refreshable extends Superview {
|
||||
allSubviews() {
|
||||
const ret = [this.content];
|
||||
if (this.header) {
|
||||
ret.push(this.header);
|
||||
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();
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
__decorate([
|
||||
Property,
|
||||
__metadata("design:type", Function)
|
||||
], Refreshable.prototype, "onRefresh", void 0);
|
||||
__decorate([
|
||||
Property,
|
||||
__metadata("design:type", Function)
|
||||
], Refreshable.prototype, "onRefresh", void 0);
|
||||
return Refreshable;
|
||||
})();
|
||||
export { Refreshable };
|
||||
export function refreshable(config) {
|
||||
const ret = new Refreshable;
|
||||
ret.layoutConfig = layoutConfig().fit();
|
||||
|
@ -35,30 +35,34 @@ export function scroller(content, config) {
|
||||
v.content = content;
|
||||
});
|
||||
}
|
||||
export class Scroller extends Superview {
|
||||
allSubviews() {
|
||||
return [this.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 });
|
||||
}
|
||||
}
|
||||
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);
|
||||
__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 };
|
||||
|
@ -25,71 +25,79 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
import { Superview, View, Property } from "../ui/view";
|
||||
import { Stack } from "./layouts";
|
||||
import { layoutConfig } from "../util/layoutconfig";
|
||||
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;
|
||||
let SlideItem = /** @class */ (() => {
|
||||
class SlideItem extends Stack {
|
||||
}
|
||||
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) {
|
||||
__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;
|
||||
this.ignoreDirtyCallOnce = false;
|
||||
//Ignore the dirty call once.
|
||||
return 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")();
|
||||
}
|
||||
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")();
|
||||
}
|
||||
}
|
||||
__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);
|
||||
__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 };
|
||||
export function slider(config) {
|
||||
const ret = new Slider;
|
||||
for (let key in config) {
|
||||
|
@ -25,28 +25,32 @@ 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";
|
||||
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);
|
||||
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 function switchView(config) {
|
||||
const ret = new Switch;
|
||||
ret.layoutConfig = layoutConfig().just();
|
||||
|
@ -33,64 +33,68 @@ export var TruncateAt;
|
||||
TruncateAt[TruncateAt["Start"] = 2] = "Start";
|
||||
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
||||
})(TruncateAt || (TruncateAt = {}));
|
||||
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);
|
||||
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 function text(config) {
|
||||
const ret = new Text;
|
||||
ret.layoutConfig = layoutConfig().fit();
|
||||
|
@ -29,7 +29,7 @@
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rollup": "^1.29.0",
|
||||
"tslib": "^1.10.0",
|
||||
"typescript": "^3.7.4",
|
||||
"typescript": "^3.9.2",
|
||||
"ws": "^7.2.1"
|
||||
},
|
||||
"publishConfig": {
|
||||
|
@ -27,7 +27,6 @@ export default [
|
||||
plugins: [
|
||||
resolve({ mainFields: ["jsnext"] }),
|
||||
],
|
||||
external: ['reflect-metadata'],
|
||||
onwarn: function (warning) {
|
||||
if (warning.code === 'THIS_IS_UNDEFINED') { return; }
|
||||
console.warn(warning.message);
|
||||
@ -80,7 +79,6 @@ export default [
|
||||
transforms: { dangerousForOf: true }
|
||||
}),
|
||||
],
|
||||
external: ['reflect-metadata'],
|
||||
onwarn: function (warning) {
|
||||
if (warning.code === 'THIS_IS_UNDEFINED') { return; }
|
||||
console.warn(warning.message);
|
||||
|
@ -13,8 +13,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
export * from 'reflect-metadata'
|
||||
|
||||
export type BridgeContext = {
|
||||
/**
|
||||
* The identify of current context
|
||||
|
Reference in New Issue
Block a user