feat:sync lost commits
This commit is contained in:
parent
ee0be5becd
commit
65f8a3c40c
@ -23,7 +23,8 @@ dependencies {
|
|||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation "com.google.android.material:material:1.0.0"
|
implementation "com.google.android.material:material:1.0.0"
|
||||||
implementation project(':devkit')
|
implementation "pub.doric:core:${rootProject.ext.Version}"
|
||||||
|
implementation "pub.doric:devkit:${rootProject.ext.Version}"
|
||||||
implementation 'com.github.bumptech.glide:glide:4.10.0'
|
implementation 'com.github.bumptech.glide:glide:4.10.0'
|
||||||
implementation 'com.github.bumptech.glide:annotations:4.10.0'
|
implementation 'com.github.bumptech.glide:annotations:4.10.0'
|
||||||
implementation 'com.github.penfeizhou.android.animation:glide-plugin:1.3.1'
|
implementation 'com.github.penfeizhou.android.animation:glide-plugin:1.3.1'
|
||||||
|
2
app/src/main/assets/demo/.gitignore
vendored
2
app/src/main/assets/demo/.gitignore
vendored
@ -1 +1 @@
|
|||||||
*.js
|
*.js
|
225
app/src/main/assets/demo/AnimatorDemo.js
Normal file
225
app/src/main/assets/demo/AnimatorDemo.js
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function box(idx = 0) {
|
||||||
|
return (new doric.Stack).also(it => {
|
||||||
|
it.width = it.height = 20;
|
||||||
|
it.backgroundColor = colors[idx || 0];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function title(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
function thisLabel(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
width: 60,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 15,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let AnimatorDemo = class AnimatorDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
const view = box(2);
|
||||||
|
view.onClick = () => {
|
||||||
|
doric.modal(context).toast('Clicked');
|
||||||
|
};
|
||||||
|
const view2 = box(3);
|
||||||
|
let idx = 0;
|
||||||
|
doric.vlayout([
|
||||||
|
title("Animator Demo"),
|
||||||
|
doric.vlayout([
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('Reset').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.width = view.height = 20;
|
||||||
|
view.x = view.y = 0;
|
||||||
|
view.rotation = 0;
|
||||||
|
view.backgroundColor = colors[2];
|
||||||
|
view.corners = 0;
|
||||||
|
view.scaleX = 1;
|
||||||
|
view.scaleY = 1;
|
||||||
|
view.translationX = 0;
|
||||||
|
view.translationY = 0;
|
||||||
|
view.rotation = 0;
|
||||||
|
},
|
||||||
|
duration: 1500,
|
||||||
|
}).then(() => {
|
||||||
|
doric.modal(context).toast('Fininshed');
|
||||||
|
}).catch(e => {
|
||||||
|
doric.modal(context).toast(`${e}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('X').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.x = view.x || 0;
|
||||||
|
view.x += 100;
|
||||||
|
view2.x += 50;
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Y').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.y = view.y || 0;
|
||||||
|
view.y += 100;
|
||||||
|
view2.y += 50;
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Width').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.width += 100;
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Height').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.height += 100;
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('BgColor').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
view.backgroundColor = colors[(idx++) % colors.length];
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Rotation').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
if (view.rotation) {
|
||||||
|
view.rotation += 0.5;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
view.rotation = 0.5;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Corner').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
if (typeof view.corners === 'number') {
|
||||||
|
view.corners += 10;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
view.corners = 10;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('scaleX').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
if (view.scaleX) {
|
||||||
|
view.scaleX += 0.1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
view.scaleX = 1.1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('scaleY').apply({
|
||||||
|
onClick: () => {
|
||||||
|
doric.animate(this)({
|
||||||
|
animations: () => {
|
||||||
|
if (view.scaleY) {
|
||||||
|
view.scaleY += 0.1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
view.scaleY = 1.1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.stack([
|
||||||
|
view,
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
backgroundColor: colors[1].alpha(0.3 * 255),
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
AnimatorDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], AnimatorDemo);
|
||||||
|
//# sourceMappingURL=AnimatorDemo.js.map
|
239
app/src/main/assets/demo/ComplicatedAnimations.js
Normal file
239
app/src/main/assets/demo/ComplicatedAnimations.js
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function box(idx = 0) {
|
||||||
|
return (new doric.Stack).also(it => {
|
||||||
|
it.width = it.height = 20;
|
||||||
|
it.backgroundColor = colors[idx || 0];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function title(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
function thisLabel(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
width: 80,
|
||||||
|
height: 30,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 10,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let AnimationDemo = class AnimationDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
const view = box(2);
|
||||||
|
const view2 = box(3);
|
||||||
|
view.onClick = () => {
|
||||||
|
doric.modal(context).toast('Clicked');
|
||||||
|
};
|
||||||
|
doric.vlayout([
|
||||||
|
title("Complicated Animation"),
|
||||||
|
doric.vlayout([
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('reset').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const rotation = new doric.RotationAnimation;
|
||||||
|
rotation.duration = 1000;
|
||||||
|
rotation.fromRotation = view.rotation || 0;
|
||||||
|
rotation.toRotation = 0;
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 1000;
|
||||||
|
translation.fromTranslationX = view.translationX || 0;
|
||||||
|
translation.toTranslationX = 0;
|
||||||
|
translation.fromTranslationY = view.translationY || 0;
|
||||||
|
translation.toTranslationY = 0;
|
||||||
|
const scale = new doric.ScaleAnimation;
|
||||||
|
scale.duration = 1000;
|
||||||
|
scale.fromScaleX = view.scaleX || 1;
|
||||||
|
scale.toScaleX = 1;
|
||||||
|
scale.fromScaleY = view.scaleY || 1;
|
||||||
|
scale.toScaleY = 1;
|
||||||
|
const animationSet = new doric.AnimationSet;
|
||||||
|
animationSet.addAnimation(rotation);
|
||||||
|
animationSet.addAnimation(translation);
|
||||||
|
animationSet.addAnimation(scale);
|
||||||
|
view.doAnimation(context, animationSet).then(() => {
|
||||||
|
doric.modal(context).toast('Resetd');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('TranslationX').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const animation = new doric.TranslationAnimation;
|
||||||
|
animation.duration = 1000;
|
||||||
|
animation.fromTranslationX = view.translationX || 0;
|
||||||
|
animation.toTranslationX = animation.fromTranslationX + 100;
|
||||||
|
animation.fromTranslationY = view.translationY || 0;
|
||||||
|
animation.toTranslationY = view.translationY || 0;
|
||||||
|
view.doAnimation(context, animation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('TranslationY').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const animation = new doric.TranslationAnimation;
|
||||||
|
animation.duration = 1000;
|
||||||
|
animation.fromTranslationX = view.translationX || 0;
|
||||||
|
animation.toTranslationX = view.translationX || 0;
|
||||||
|
animation.fromTranslationY = view.translationY || 0;
|
||||||
|
animation.toTranslationY = animation.fromTranslationY + 100;
|
||||||
|
view.doAnimation(context, animation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('ScaleX').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const animation = new doric.ScaleAnimation;
|
||||||
|
animation.duration = 1000;
|
||||||
|
animation.fromScaleX = view.scaleX || 1;
|
||||||
|
animation.toScaleX = animation.fromScaleX + 1;
|
||||||
|
view.doAnimation(context, animation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('ScaleY').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const animation = new doric.ScaleAnimation;
|
||||||
|
animation.duration = 1000;
|
||||||
|
animation.fromScaleY = view.scaleY || 1;
|
||||||
|
animation.toScaleY = animation.fromScaleY + 1;
|
||||||
|
view.doAnimation(context, animation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('rotation').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const animation = new doric.RotationAnimation;
|
||||||
|
animation.duration = 1000;
|
||||||
|
animation.fromRotation = view.rotation || 0;
|
||||||
|
animation.toRotation = animation.fromRotation + 0.25;
|
||||||
|
view.doAnimation(context, animation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('group').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const rotation = new doric.RotationAnimation;
|
||||||
|
rotation.duration = 1000;
|
||||||
|
rotation.fromRotation = 0;
|
||||||
|
rotation.toRotation = 4;
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 1000;
|
||||||
|
translation.fromTranslationX = view.translationX || 0;
|
||||||
|
translation.toTranslationX = 100;
|
||||||
|
const animationSet = new doric.AnimationSet;
|
||||||
|
animationSet.addAnimation(rotation);
|
||||||
|
animationSet.addAnimation(translation);
|
||||||
|
view.doAnimation(context, animationSet);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.hlayout([
|
||||||
|
thisLabel('Default').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 3000;
|
||||||
|
translation.fromTranslationX = 0;
|
||||||
|
translation.toTranslationX = 300;
|
||||||
|
translation.timingFunction = doric.TimingFunction.Default;
|
||||||
|
view.doAnimation(context, translation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('Linear').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 3000;
|
||||||
|
translation.fromTranslationX = 0;
|
||||||
|
translation.toTranslationX = 300;
|
||||||
|
translation.timingFunction = doric.TimingFunction.Linear;
|
||||||
|
view.doAnimation(context, translation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('EaseIn').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 3000;
|
||||||
|
translation.fromTranslationX = 0;
|
||||||
|
translation.toTranslationX = 300;
|
||||||
|
translation.timingFunction = doric.TimingFunction.EaseIn;
|
||||||
|
view.doAnimation(context, translation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('EaseOut').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 3000;
|
||||||
|
translation.fromTranslationX = 0;
|
||||||
|
translation.toTranslationX = 300;
|
||||||
|
translation.timingFunction = doric.TimingFunction.EaseOut;
|
||||||
|
view.doAnimation(context, translation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
thisLabel('EaseInEaseOut').apply({
|
||||||
|
onClick: () => {
|
||||||
|
const translation = new doric.TranslationAnimation;
|
||||||
|
translation.duration = 3000;
|
||||||
|
translation.fromTranslationX = 0;
|
||||||
|
translation.toTranslationX = 300;
|
||||||
|
translation.timingFunction = doric.TimingFunction.EaseInEaseOut;
|
||||||
|
view.doAnimation(context, translation);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
]).apply({ space: 10 }),
|
||||||
|
doric.stack([
|
||||||
|
view.also(v => {
|
||||||
|
v.x = 20;
|
||||||
|
v.y = 0;
|
||||||
|
v.width = 30;
|
||||||
|
v.left = 15;
|
||||||
|
}),
|
||||||
|
view2.also(v => {
|
||||||
|
v.x = v.y = 20;
|
||||||
|
v.y = 40;
|
||||||
|
v.scaleX = 1.5;
|
||||||
|
})
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
backgroundColor: colors[1].alpha(0.3 * 255),
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
AnimationDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], AnimationDemo);
|
||||||
|
//# sourceMappingURL=ComplicatedAnimations.js.map
|
78
app/src/main/assets/demo/ComplicatedDemo.js
Normal file
78
app/src/main/assets/demo/ComplicatedDemo.js
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let MyDemo = class MyDemo extends doric.Panel {
|
||||||
|
build(root) {
|
||||||
|
let refreshed;
|
||||||
|
let headerImage;
|
||||||
|
doric.stack([
|
||||||
|
refreshed = doric.refreshable({
|
||||||
|
onRefresh: () => {
|
||||||
|
refreshed.setRefreshing(context, false);
|
||||||
|
},
|
||||||
|
header: doric.pullable(doric.stack([]).apply({
|
||||||
|
backgroundColor: doric.Color.RED,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
width: 100,
|
||||||
|
height: 30,
|
||||||
|
}), {
|
||||||
|
startAnimation: () => {
|
||||||
|
},
|
||||||
|
stopAnimation: () => {
|
||||||
|
},
|
||||||
|
setPullingDistance: (distance) => {
|
||||||
|
headerImage.scaleX = headerImage.scaleY = (headerImage.height + distance * 2) / headerImage.height;
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
content: doric.list({
|
||||||
|
itemCount: 20,
|
||||||
|
renderItem: (idx) => {
|
||||||
|
return doric.listItem(doric.text({
|
||||||
|
text: `Item :${idx}`,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
width: root.width,
|
||||||
|
height: 50,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[idx % colors.length],
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}).apply({}),
|
||||||
|
}).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).also(v => {
|
||||||
|
v.top = 200;
|
||||||
|
}),
|
||||||
|
headerImage = doric.image({
|
||||||
|
imageUrl: "https://img.zcool.cn/community/01e75b5da933daa801209e1ffa4649.jpg@1280w_1l_2o_100sh.jpg",
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
width: root.width,
|
||||||
|
height: 200,
|
||||||
|
scaleType: doric.ScaleType.ScaleAspectFill,
|
||||||
|
}),
|
||||||
|
]).in(root);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
MyDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], MyDemo);
|
||||||
|
//# sourceMappingURL=ComplicatedDemo.js.map
|
128
app/src/main/assets/demo/Counter.js
Normal file
128
app/src/main/assets/demo/Counter.js
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
var __metadata = (undefined && undefined.__metadata) || function (k, v) {
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||||
|
};
|
||||||
|
class CounterView extends doric.ViewHolder {
|
||||||
|
build(root) {
|
||||||
|
root.addChild(doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
textSize: 40,
|
||||||
|
layoutConfig: {
|
||||||
|
alignment: doric.Gravity.Center,
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
},
|
||||||
|
}).also(it => { this.number = it; }),
|
||||||
|
doric.text({
|
||||||
|
text: "点击计数",
|
||||||
|
textSize: 20,
|
||||||
|
border: {
|
||||||
|
width: 1,
|
||||||
|
color: doric.Color.parse('#000000'),
|
||||||
|
},
|
||||||
|
corners: 5,
|
||||||
|
layoutConfig: {
|
||||||
|
alignment: doric.Gravity.Center,
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
},
|
||||||
|
padding: {
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
top: 10,
|
||||||
|
bottom: 10,
|
||||||
|
},
|
||||||
|
shadow: {
|
||||||
|
color: doric.Color.parse("#00ff00"),
|
||||||
|
opacity: 0.5,
|
||||||
|
radius: 20,
|
||||||
|
offsetX: 10,
|
||||||
|
offsetY: 10,
|
||||||
|
}
|
||||||
|
}).also(it => { this.counter = it; }),
|
||||||
|
]).also(it => {
|
||||||
|
it.width = 200;
|
||||||
|
it.height = 200;
|
||||||
|
it.space = 20;
|
||||||
|
it.gravity = doric.Gravity.Center;
|
||||||
|
it.layoutConfig = {
|
||||||
|
alignment: doric.Gravity.Center
|
||||||
|
};
|
||||||
|
it.border = {
|
||||||
|
width: 1,
|
||||||
|
color: doric.Color.parse("#000000"),
|
||||||
|
};
|
||||||
|
it.shadow = {
|
||||||
|
color: doric.Color.parse("#ffff00"),
|
||||||
|
opacity: 0.5,
|
||||||
|
radius: 20,
|
||||||
|
offsetX: 10,
|
||||||
|
offsetY: 10,
|
||||||
|
};
|
||||||
|
it.corners = 20;
|
||||||
|
it.backgroundColor = doric.Color.parse('#ff00ff');
|
||||||
|
}));
|
||||||
|
root.addChild((new doric.Image).also(iv => {
|
||||||
|
iv.imageUrl = "https://misc.aotu.io/ONE-SUNDAY/SteamEngine.png";
|
||||||
|
iv.layoutConfig = {
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
bind(state) {
|
||||||
|
this.number.text = `${state.count}`;
|
||||||
|
}
|
||||||
|
setCounter(v) {
|
||||||
|
this.counter.onClick = v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class CounterVM extends doric.ViewModel {
|
||||||
|
onAttached(s, vh) {
|
||||||
|
vh.counter.onClick = () => {
|
||||||
|
this.updateState(state => {
|
||||||
|
state.count++;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let MyPage = class MyPage extends doric.VMPanel {
|
||||||
|
getViewHolderClass() {
|
||||||
|
return CounterView;
|
||||||
|
}
|
||||||
|
getViewModelClass() {
|
||||||
|
return CounterVM;
|
||||||
|
}
|
||||||
|
getState() {
|
||||||
|
return {
|
||||||
|
count: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
log() {
|
||||||
|
doric.log("Hello.HEGO");
|
||||||
|
doric.logw("Hello.HEGO");
|
||||||
|
doric.loge("Hello.HEGO");
|
||||||
|
context.modal.toast('This is a toast.').then((r) => {
|
||||||
|
doric.loge(r);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
__decorate([
|
||||||
|
doric.NativeCall,
|
||||||
|
__metadata("design:type", Function),
|
||||||
|
__metadata("design:paramtypes", []),
|
||||||
|
__metadata("design:returntype", void 0)
|
||||||
|
], MyPage.prototype, "log", null);
|
||||||
|
MyPage = __decorate([
|
||||||
|
Entry
|
||||||
|
], MyPage);
|
||||||
|
//# sourceMappingURL=Counter.js.map
|
392
app/src/main/assets/demo/EffectsDemo.js
Normal file
392
app/src/main/assets/demo/EffectsDemo.js
Normal file
@ -0,0 +1,392 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
function box(idx = 0) {
|
||||||
|
return (new doric.Stack).also(it => {
|
||||||
|
it.width = it.height = 20;
|
||||||
|
it.backgroundColor = colors[idx || 0];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let EffectsDemo = class EffectsDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
label("Origin view"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Border"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
border: {
|
||||||
|
width: 5,
|
||||||
|
color: colors[3]
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 10,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
bottom: 10
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Shadow"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 3,
|
||||||
|
offsetY: 3,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
bottom: 10
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
]).apply({ space: 20 }),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
label("Border,Corner"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
border: {
|
||||||
|
width: 5,
|
||||||
|
color: colors[3]
|
||||||
|
},
|
||||||
|
corners: 10,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Border,Shadow"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
border: {
|
||||||
|
width: 5,
|
||||||
|
color: colors[3]
|
||||||
|
},
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 3,
|
||||||
|
offsetY: 3,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
bottom: 10
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner,Shadow"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 10,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 3,
|
||||||
|
offsetY: 3,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
bottom: 10
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Border,Corner,Shadow"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
border: {
|
||||||
|
width: 5,
|
||||||
|
color: colors[3]
|
||||||
|
},
|
||||||
|
corners: 10,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 3,
|
||||||
|
offsetY: 3,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
]).apply({ space: 20 }),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
label("Shadow"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 50,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 0,
|
||||||
|
offsetY: 0,
|
||||||
|
radius: 10,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
bottom: 10,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Shadow,offset"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 50,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 5,
|
||||||
|
offsetY: 5,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
bottom: 10,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Shadow,opacity"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 50,
|
||||||
|
shadow: {
|
||||||
|
opacity: 0.5,
|
||||||
|
color: colors[1],
|
||||||
|
offsetX: 5,
|
||||||
|
offsetY: 5,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
bottom: 10,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Shadow,color"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 50,
|
||||||
|
shadow: {
|
||||||
|
opacity: 1,
|
||||||
|
color: colors[2],
|
||||||
|
offsetX: 5,
|
||||||
|
offsetY: 5,
|
||||||
|
radius: 5,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 10,
|
||||||
|
right: 10,
|
||||||
|
bottom: 10,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
]).apply({ space: 20 }),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner round"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: 50,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner left top"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: {
|
||||||
|
leftTop: 50,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner right top"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: {
|
||||||
|
rightTop: 50,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner left bottom"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: {
|
||||||
|
leftBottom: 50,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Corner right bottom"),
|
||||||
|
box().apply({
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
corners: {
|
||||||
|
rightBottom: 50,
|
||||||
|
},
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().m({
|
||||||
|
left: 5,
|
||||||
|
right: 5,
|
||||||
|
bottom: 5,
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
}),
|
||||||
|
]).apply({ space: 20 }),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
})).also(it => {
|
||||||
|
it.layoutConfig = doric.layoutConfig().atmost();
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
EffectsDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], EffectsDemo);
|
||||||
|
//# sourceMappingURL=EffectsDemo.js.map
|
53
app/src/main/assets/demo/FlowLayoutDemo.js
Normal file
53
app/src/main/assets/demo/FlowLayoutDemo.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let FlowDemo = class FlowDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.flowlayout({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
itemCount: 500,
|
||||||
|
columnCount: 3,
|
||||||
|
columnSpace: 10,
|
||||||
|
rowSpace: 10,
|
||||||
|
renderItem: (idx) => {
|
||||||
|
return new doric.FlowLayoutItem().apply({
|
||||||
|
backgroundColor: colors[idx % colors.length],
|
||||||
|
height: 50 + (idx % 3) * 20,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
}).also(it => {
|
||||||
|
it.addChild(doric.text({
|
||||||
|
text: `${idx}`,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
textSize: 20,
|
||||||
|
layoutConfig: doric.layoutConfig().wrap().a(doric.Gravity.Center)
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FlowDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], FlowDemo);
|
||||||
|
//# sourceMappingURL=FlowLayoutDemo.js.map
|
139
app/src/main/assets/demo/ImageDemo.js
Normal file
139
app/src/main/assets/demo/ImageDemo.js
Normal file
File diff suppressed because one or more lines are too long
464
app/src/main/assets/demo/LayoutDemo.js
Normal file
464
app/src/main/assets/demo/LayoutDemo.js
Normal file
@ -0,0 +1,464 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
const colors = [
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
];
|
||||||
|
function box(idx = 0) {
|
||||||
|
return (new doric.Stack).also(it => {
|
||||||
|
it.width = it.height = 20;
|
||||||
|
it.backgroundColor = doric.Color.parse(colors[idx || 0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function boxStr(str, idx = 0) {
|
||||||
|
return (new doric.Text).also(it => {
|
||||||
|
it.width = it.height = 20;
|
||||||
|
it.text = str;
|
||||||
|
it.textColor = doric.Color.parse('#ffffff');
|
||||||
|
it.backgroundColor = doric.Color.parse(colors[idx || 0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let LayoutDemo = class LayoutDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
label("Horizontal Layout(Align to Top)"),
|
||||||
|
doric.hlayout([
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 60
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
}),
|
||||||
|
label("Horizontal Layout(Align to Bottom)"),
|
||||||
|
doric.hlayout([
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 60
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
it.gravity = doric.gravity().bottom();
|
||||||
|
}),
|
||||||
|
label("Horizontal Layout(Align to Center)"),
|
||||||
|
doric.hlayout([
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 60
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 40
|
||||||
|
}),
|
||||||
|
box().apply({
|
||||||
|
height: 20
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
it.gravity = doric.gravity().center();
|
||||||
|
}),
|
||||||
|
label("Horizontal Layout(Weight)"),
|
||||||
|
doric.hlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(2),
|
||||||
|
box(4),
|
||||||
|
]).apply({
|
||||||
|
width: 200,
|
||||||
|
height: 30,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
box(3),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(4),
|
||||||
|
]).apply({
|
||||||
|
width: 200,
|
||||||
|
height: 30,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
box(3),
|
||||||
|
box(2),
|
||||||
|
boxStr('weight=1', 4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 200,
|
||||||
|
height: 30,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(4),
|
||||||
|
]).apply({
|
||||||
|
width: 200,
|
||||||
|
height: 30,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 200,
|
||||||
|
height: 30,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
it.gravity = doric.gravity().center();
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
label("Vertical Layout(Algin to Left)"),
|
||||||
|
doric.vlayout([
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 60
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
space: 20
|
||||||
|
}),
|
||||||
|
label("Vertical Layout(Algin to Right)"),
|
||||||
|
doric.vlayout([
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 60
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
space: 20,
|
||||||
|
gravity: doric.gravity().right(),
|
||||||
|
}),
|
||||||
|
label("Vertical Layout(Algin to Center)"),
|
||||||
|
doric.vlayout([
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 60
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 40
|
||||||
|
}),
|
||||||
|
box(1).apply({
|
||||||
|
width: 20
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
space: 20,
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
label("Vertical Layout(Weight)"),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.vlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
box(2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 100,
|
||||||
|
height: 200,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
box(3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 100,
|
||||||
|
height: 200,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
box(3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
box(2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 100,
|
||||||
|
height: 200,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
box(4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 100,
|
||||||
|
height: 200,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
boxStr('weight=1', 3).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 2).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
boxStr('weight=1', 4).apply({
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
weight: 1,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
width: 100,
|
||||||
|
height: 200,
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
backgroundColor: doric.Color.parse('#eeeeee'),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
it.gravity = doric.gravity().left();
|
||||||
|
})
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
})).also(it => {
|
||||||
|
it.layoutConfig = doric.layoutConfig().atmost();
|
||||||
|
})
|
||||||
|
.in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
LayoutDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], LayoutDemo);
|
||||||
|
//# sourceMappingURL=LayoutDemo.js.map
|
155
app/src/main/assets/demo/ListDemo.js
Normal file
155
app/src/main/assets/demo/ListDemo.js
Normal file
File diff suppressed because one or more lines are too long
174
app/src/main/assets/demo/ModalDemo.js
Normal file
174
app/src/main/assets/demo/ModalDemo.js
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let ModalDemo = class ModalDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Modal",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.Gravity.Center,
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
label('toast on bottom'),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).toast('This is a toast.');
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('toast on top'),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).toast('This is a toast.', doric.Gravity.Top);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('toast on center'),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).toast('This is a toast.', doric.Gravity.Center);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
doric.text({
|
||||||
|
text: "Alert",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[2],
|
||||||
|
textAlignment: doric.Gravity.Center,
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).alert({
|
||||||
|
msg: 'This is alert.',
|
||||||
|
title: 'Alert title',
|
||||||
|
okLabel: "OkLabel"
|
||||||
|
}).then(e => {
|
||||||
|
doric.modal(context).toast('Clicked OK.');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
doric.text({
|
||||||
|
text: "Confirm",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[3],
|
||||||
|
textAlignment: doric.Gravity.Center,
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).confirm({
|
||||||
|
msg: 'This is Confirm.',
|
||||||
|
title: 'Confirm title',
|
||||||
|
okLabel: "OkLabel",
|
||||||
|
cancelLabel: 'CancelLabel',
|
||||||
|
}).then(() => {
|
||||||
|
doric.modal(context).toast('Clicked OK.');
|
||||||
|
}, () => {
|
||||||
|
doric.modal(context).toast('Clicked Cancel.');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
doric.text({
|
||||||
|
text: "Prompt",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[4],
|
||||||
|
textAlignment: doric.Gravity.Center,
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.modal(context).prompt({
|
||||||
|
msg: 'This is Prompt.',
|
||||||
|
title: 'Prompt title',
|
||||||
|
okLabel: "OkLabel",
|
||||||
|
cancelLabel: 'CancelLabel',
|
||||||
|
}).then(e => {
|
||||||
|
doric.modal(context).toast(`Clicked OK.Input:${e}`);
|
||||||
|
}, e => {
|
||||||
|
doric.modal(context).toast(`Clicked Cancel.Input:${e}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.Gravity.Center,
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ModalDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], ModalDemo);
|
||||||
|
//# sourceMappingURL=ModalDemo.js.map
|
124
app/src/main/assets/demo/NavbarDemo.js
Normal file
124
app/src/main/assets/demo/NavbarDemo.js
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function title(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let NavbarDemo = class NavbarDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
title("Navbar Demo"),
|
||||||
|
label('isHidden').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navbar(context).isHidden().then(e => doric.modal(context).alert(`Navbar isHidden:${e}`)).catch(e => {
|
||||||
|
doric.modal(context).alert(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('setHidden').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navbar(context).isHidden()
|
||||||
|
.then(e => doric.navbar(context).setHidden(!e))
|
||||||
|
.catch(e => {
|
||||||
|
doric.modal(context).alert(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('setTitle').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navbar(context).setTitle('Setted Title')
|
||||||
|
.catch(e => {
|
||||||
|
doric.modal(context).alert(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('setBgColor').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navbar(context).setBgColor(doric.Color.YELLOW)
|
||||||
|
.catch(e => {
|
||||||
|
doric.modal(context).alert(e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
label('Pop').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navigator(context).pop();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
NavbarDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], NavbarDemo);
|
||||||
|
//# sourceMappingURL=NavbarDemo.js.map
|
80
app/src/main/assets/demo/NavigatorDemo.js
Normal file
80
app/src/main/assets/demo/NavigatorDemo.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let NaivgatorDemo = class NaivgatorDemo extends doric.Panel {
|
||||||
|
build(root) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Navigator Demo",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
...[
|
||||||
|
'NavbarDemo',
|
||||||
|
'Counter', 'EffectsDemo', 'ImageDemo', 'LayoutDemo',
|
||||||
|
'ListDemo', 'ModalDemo', 'NavigatorDemo',
|
||||||
|
'NetworkDemo', 'ScrollerDemo', 'SliderDemo', 'Snake', 'StorageDemo'
|
||||||
|
].map(e => label(e).apply({
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navigator(context).push(`assets://demo/${e}.js`, `${e}.js`);
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
label('POP').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.navigator(context).pop();
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(root);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
NaivgatorDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], NaivgatorDemo);
|
||||||
|
//# sourceMappingURL=NavigatorDemo.js.map
|
72
app/src/main/assets/demo/NetworkDemo.js
Normal file
72
app/src/main/assets/demo/NetworkDemo.js
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function title(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let NetworkDemo = class NetworkDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
title("Network Demo"),
|
||||||
|
label('Click me').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.network(context).get('https://m.baidu.com').then(e => {
|
||||||
|
doric.modal(context).alert(JSON.stringify(e));
|
||||||
|
}).catch(e => {
|
||||||
|
doric.modal(context).toast('Catched:' + JSON.stringify(e));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
NetworkDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], NetworkDemo);
|
||||||
|
//# sourceMappingURL=NetworkDemo.js.map
|
84
app/src/main/assets/demo/PopoverDemo.js
Normal file
84
app/src/main/assets/demo/PopoverDemo.js
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function title(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let PopoverDemo = class PopoverDemo extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
title("Popover Demo"),
|
||||||
|
label('Popover').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.popover(context).show(doric.text({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly().a(doric.Gravity.Center),
|
||||||
|
text: "This is PopOver Window",
|
||||||
|
}).also(v => {
|
||||||
|
let idx = 0;
|
||||||
|
v.onClick = () => {
|
||||||
|
v.backgroundColor = colors[(++idx) % colors.length];
|
||||||
|
};
|
||||||
|
doric.modal(context).toast('Dismissed after 3 seconds');
|
||||||
|
setTimeout(() => {
|
||||||
|
doric.popover(context).dismiss();
|
||||||
|
}, 3000);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
PopoverDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], PopoverDemo);
|
||||||
|
//# sourceMappingURL=PopoverDemo.js.map
|
132
app/src/main/assets/demo/RefreshableDemo.js
Normal file
132
app/src/main/assets/demo/RefreshableDemo.js
Normal file
File diff suppressed because one or more lines are too long
57
app/src/main/assets/demo/ScrollerDemo.js
Normal file
57
app/src/main/assets/demo/ScrollerDemo.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
let ScrollerPanel = class ScrollerPanel extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
doric.scroller(doric.vlayout(new Array(100).fill(1).map(e => label('Scroll Content')))).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
width: 300,
|
||||||
|
height: 500,
|
||||||
|
backgroundColor: doric.Color.RED,
|
||||||
|
}),
|
||||||
|
doric.scroller(doric.vlayout(new Array(100).fill(1).map(e => label('Scroll Content')))).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
width: 300,
|
||||||
|
height: 500,
|
||||||
|
backgroundColor: doric.Color.BLUE,
|
||||||
|
})
|
||||||
|
]))
|
||||||
|
.apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.EXACTLY),
|
||||||
|
height: 500,
|
||||||
|
backgroundColor: doric.Color.YELLOW,
|
||||||
|
})
|
||||||
|
.in(rootView);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ScrollerPanel = __decorate([
|
||||||
|
Entry
|
||||||
|
], ScrollerPanel);
|
||||||
|
//# sourceMappingURL=ScrollerDemo.js.map
|
81
app/src/main/assets/demo/SliderDemo.js
Normal file
81
app/src/main/assets/demo/SliderDemo.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
const imageUrls = [
|
||||||
|
'http://b.hiphotos.baidu.com/image/pic/item/908fa0ec08fa513db777cf78376d55fbb3fbd9b3.jpg',
|
||||||
|
'http://f.hiphotos.baidu.com/image/pic/item/0e2442a7d933c8956c0e8eeadb1373f08202002a.jpg',
|
||||||
|
'http://f.hiphotos.baidu.com/image/pic/item/b151f8198618367aa7f3cc7424738bd4b31ce525.jpg',
|
||||||
|
'http://b.hiphotos.baidu.com/image/pic/item/0eb30f2442a7d9337119f7dba74bd11372f001e0.jpg',
|
||||||
|
'http://a.hiphotos.baidu.com/image/h%3D300/sign=b38f3fc35b0fd9f9bf175369152cd42b/9a504fc2d5628535bdaac29e9aef76c6a6ef63c2.jpg',
|
||||||
|
'http://h.hiphotos.baidu.com/image/pic/item/810a19d8bc3eb1354c94a704ac1ea8d3fd1f4439.jpg',
|
||||||
|
'http://calonye.com/wp-content/uploads/2015/08/0-wx_fmtgiftpwebpwxfrom5wx_lazy1-9.gif',
|
||||||
|
'http://hbimg.b0.upaiyun.com/ca29ea125b7f2d580f573e48eb594b1ef509757f34a08-m0hK45_fw658',
|
||||||
|
'https://misc.aotu.io/ONE-SUNDAY/SteamEngine.png',
|
||||||
|
];
|
||||||
|
let SliderPanel = class SliderPanel extends doric.Panel {
|
||||||
|
build(rootView) {
|
||||||
|
rootView.addChild(doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Gallery",
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
doric.slider({
|
||||||
|
itemCount: 100,
|
||||||
|
renderPage: (idx) => {
|
||||||
|
return doric.slideItem(doric.image({
|
||||||
|
imageUrl: imageUrls[idx % imageUrls.length],
|
||||||
|
scaleType: doric.ScaleType.ScaleAspectFit,
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST).h(doric.LayoutSpec.AT_MOST).a(doric.gravity().center()),
|
||||||
|
})).also(it => {
|
||||||
|
let start = idx;
|
||||||
|
it.onClick = () => {
|
||||||
|
it.backgroundColor = (colors[++start % colors.length]);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
},
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
weight: 1,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.layoutConfig = {
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SliderPanel = __decorate([
|
||||||
|
Entry
|
||||||
|
], SliderPanel);
|
||||||
|
//# sourceMappingURL=SliderDemo.js.map
|
341
app/src/main/assets/demo/Snake.js
Normal file
341
app/src/main/assets/demo/Snake.js
Normal file
@ -0,0 +1,341 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
var Direction;
|
||||||
|
(function (Direction) {
|
||||||
|
Direction[Direction["left"] = 0] = "left";
|
||||||
|
Direction[Direction["right"] = 1] = "right";
|
||||||
|
Direction[Direction["up"] = 2] = "up";
|
||||||
|
Direction[Direction["down"] = 3] = "down";
|
||||||
|
})(Direction || (Direction = {}));
|
||||||
|
var State;
|
||||||
|
(function (State) {
|
||||||
|
State[State["idel"] = 0] = "idel";
|
||||||
|
State[State["run"] = 1] = "run";
|
||||||
|
State[State["fail"] = 2] = "fail";
|
||||||
|
})(State || (State = {}));
|
||||||
|
class SnakeModel {
|
||||||
|
constructor(w, h) {
|
||||||
|
this.state = State.idel;
|
||||||
|
this.direction = Direction.right;
|
||||||
|
this.food = { x: -1, y: -1 };
|
||||||
|
this.head = {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
};
|
||||||
|
this.width = w;
|
||||||
|
this.height = h;
|
||||||
|
}
|
||||||
|
refreshFood() {
|
||||||
|
this.food.x = Math.floor(Math.random() * (this.width - 1));
|
||||||
|
this.food.y = Math.floor(Math.random() * (this.height - 1));
|
||||||
|
}
|
||||||
|
get tail() {
|
||||||
|
let node = this.head;
|
||||||
|
while (node.next !== undefined) {
|
||||||
|
node = node.next;
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
get score() {
|
||||||
|
let node = this.head;
|
||||||
|
let n = 0;
|
||||||
|
while (node.next !== undefined) {
|
||||||
|
n++;
|
||||||
|
node = node.next;
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
forward(node) {
|
||||||
|
switch (this.direction) {
|
||||||
|
case Direction.left:
|
||||||
|
node.x -= 1;
|
||||||
|
break;
|
||||||
|
case Direction.right:
|
||||||
|
node.x += 1;
|
||||||
|
break;
|
||||||
|
case Direction.up:
|
||||||
|
node.y -= 1;
|
||||||
|
break;
|
||||||
|
case Direction.down:
|
||||||
|
node.y += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
step() {
|
||||||
|
if (this.state !== State.run) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let tail = this.tail;
|
||||||
|
while (tail.prev != undefined) {
|
||||||
|
tail.x = tail.prev.x;
|
||||||
|
tail.y = tail.prev.y;
|
||||||
|
tail = tail.prev;
|
||||||
|
}
|
||||||
|
this.forward(this.head);
|
||||||
|
if (this.head.x < 0 || this.head.x >= this.width
|
||||||
|
|| this.head.y < 0 || this.head.y >= this.height) {
|
||||||
|
//If out of bound
|
||||||
|
doric.loge('out of bound');
|
||||||
|
this.state = State.fail;
|
||||||
|
}
|
||||||
|
else if (this.head.x == this.food.x && this.head.y == this.food.y) {
|
||||||
|
//If eat food
|
||||||
|
let head = { x: this.food.x, y: this.food.y };
|
||||||
|
doric.log('eat food', head);
|
||||||
|
this.forward(head);
|
||||||
|
this.head.prev = head;
|
||||||
|
head.next = this.head;
|
||||||
|
this.head = head;
|
||||||
|
this.refreshFood();
|
||||||
|
}
|
||||||
|
if (this.crashAtSelf()) {
|
||||||
|
//If crash at self
|
||||||
|
doric.loge('crash at self');
|
||||||
|
this.state = State.fail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
crashAtSelf() {
|
||||||
|
let cur = this.head.next;
|
||||||
|
while (cur !== undefined) {
|
||||||
|
if (cur.x == this.head.x && cur.y == this.head.y) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.direction = Direction.right;
|
||||||
|
this.state = State.run;
|
||||||
|
this.head.x = 0;
|
||||||
|
this.head.y = 0;
|
||||||
|
this.head.next = undefined;
|
||||||
|
this.refreshFood();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class SnakeView extends doric.ViewHolder {
|
||||||
|
build(root) {
|
||||||
|
root.backgroundColor = doric.Color.parse('#000000');
|
||||||
|
doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Snake",
|
||||||
|
textSize: 20,
|
||||||
|
textColor: doric.Color.parse("#ffffff"),
|
||||||
|
layoutConfig: {
|
||||||
|
alignment: new doric.Gravity().centerX(),
|
||||||
|
margin: {
|
||||||
|
top: 20
|
||||||
|
},
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
(new doric.Stack).also(panel => {
|
||||||
|
panel.backgroundColor = doric.Color.parse('#00ff00');
|
||||||
|
this.panel = panel;
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Start",
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.parse("#ffffff"),
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
},
|
||||||
|
}).also(it => this.start = it),
|
||||||
|
]).also(it => {
|
||||||
|
it.layoutConfig = {
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
doric.vlayout([
|
||||||
|
doric.hlayout([
|
||||||
|
doric.text({
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
text: "↑",
|
||||||
|
textSize: 30,
|
||||||
|
textAlignment: new doric.Gravity().center(),
|
||||||
|
backgroundColor: doric.Color.parse('#ffff00'),
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}).also(it => this.up = it)
|
||||||
|
]).also(it => {
|
||||||
|
it.layoutConfig = {
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
doric.hlayout([
|
||||||
|
doric.text({
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
text: "←",
|
||||||
|
textSize: 30,
|
||||||
|
textAlignment: new doric.Gravity().center(),
|
||||||
|
backgroundColor: doric.Color.parse('#ffff00'),
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}).also(it => this.left = it),
|
||||||
|
doric.text({
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
text: "↓",
|
||||||
|
textSize: 30,
|
||||||
|
textAlignment: new doric.Gravity().center(),
|
||||||
|
backgroundColor: doric.Color.parse('#ffff00'),
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}).also(it => this.down = it),
|
||||||
|
doric.text({
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
text: "→",
|
||||||
|
textSize: 30,
|
||||||
|
textAlignment: new doric.Gravity().center(),
|
||||||
|
backgroundColor: doric.Color.parse('#ffff00'),
|
||||||
|
layoutConfig: {
|
||||||
|
widthSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
heightSpec: doric.LayoutSpec.EXACTLY,
|
||||||
|
},
|
||||||
|
}).also(it => this.right = it),
|
||||||
|
]).also(it => {
|
||||||
|
it.layoutConfig = {
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
};
|
||||||
|
it.space = 10;
|
||||||
|
}),
|
||||||
|
]).also(controlArea => {
|
||||||
|
controlArea.gravity = new doric.Gravity().centerX();
|
||||||
|
controlArea.space = 10;
|
||||||
|
controlArea.layoutConfig = {
|
||||||
|
alignment: new doric.Gravity().centerX(),
|
||||||
|
widthSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
heightSpec: doric.LayoutSpec.WRAP_CONTENT,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
]).also(it => {
|
||||||
|
it.space = 20;
|
||||||
|
it.layoutConfig = {
|
||||||
|
alignment: new doric.Gravity().centerX().top(),
|
||||||
|
widthSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
heightSpec: doric.LayoutSpec.AT_MOST,
|
||||||
|
};
|
||||||
|
it.gravity = new doric.Gravity().centerX();
|
||||||
|
}).in(root);
|
||||||
|
}
|
||||||
|
bind(state) {
|
||||||
|
doric.log('build', state);
|
||||||
|
this.panel.width = state.width * 10;
|
||||||
|
this.panel.height = state.height * 10;
|
||||||
|
let node = state.head;
|
||||||
|
let nodes = [];
|
||||||
|
while (node != undefined) {
|
||||||
|
nodes.push(node);
|
||||||
|
node = node.next;
|
||||||
|
}
|
||||||
|
nodes.push(state.food);
|
||||||
|
nodes.forEach((e, index) => {
|
||||||
|
let item = this.panel.children[index];
|
||||||
|
if (item === undefined) {
|
||||||
|
item = new doric.Stack;
|
||||||
|
item.width = item.height = 10;
|
||||||
|
item.corners = 5;
|
||||||
|
item.shadow = {
|
||||||
|
color: doric.Color.GRAY,
|
||||||
|
opacity: 1,
|
||||||
|
radius: 3,
|
||||||
|
offsetX: 3,
|
||||||
|
offsetY: 3,
|
||||||
|
};
|
||||||
|
this.panel.addChild(item);
|
||||||
|
}
|
||||||
|
if (index === nodes.length - 1) {
|
||||||
|
item.backgroundColor = doric.Color.parse('#ffff00');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
item.backgroundColor = doric.Color.parse('#ff0000');
|
||||||
|
}
|
||||||
|
item.x = e.x * 10;
|
||||||
|
item.y = e.y * 10;
|
||||||
|
});
|
||||||
|
if (nodes.length < this.panel.children.length) {
|
||||||
|
this.panel.children.length = nodes.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class SnakeVM extends doric.ViewModel {
|
||||||
|
constructor() {
|
||||||
|
super(...arguments);
|
||||||
|
this.start = () => {
|
||||||
|
if (this.timerId !== undefined) {
|
||||||
|
clearInterval(this.timerId);
|
||||||
|
}
|
||||||
|
this.updateState(it => it.reset());
|
||||||
|
this.timerId = setInterval(() => {
|
||||||
|
this.updateState(it => it.step());
|
||||||
|
if (this.getState().state === State.fail) {
|
||||||
|
doric.loge('Game Over');
|
||||||
|
this.stop();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
};
|
||||||
|
this.stop = () => {
|
||||||
|
if (this.timerId !== undefined) {
|
||||||
|
clearInterval(this.timerId);
|
||||||
|
this.timerId = undefined;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.left = () => {
|
||||||
|
this.updateState(it => it.direction = Direction.left);
|
||||||
|
};
|
||||||
|
this.right = () => {
|
||||||
|
this.updateState(it => it.direction = Direction.right);
|
||||||
|
};
|
||||||
|
this.up = () => {
|
||||||
|
this.updateState(it => it.direction = Direction.up);
|
||||||
|
};
|
||||||
|
this.down = () => {
|
||||||
|
this.updateState(it => it.direction = Direction.down);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
onAttached(state, v) {
|
||||||
|
doric.takeNonNull(v.start)(it => it.onClick = this.start);
|
||||||
|
doric.takeNonNull(v.left)(it => it.onClick = this.left);
|
||||||
|
doric.takeNonNull(v.right)(it => it.onClick = this.right);
|
||||||
|
doric.takeNonNull(v.up)(it => it.onClick = this.up);
|
||||||
|
doric.takeNonNull(v.down)(it => it.onClick = this.down);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let SnakePanel = class SnakePanel extends doric.VMPanel {
|
||||||
|
getViewModelClass() {
|
||||||
|
return SnakeVM;
|
||||||
|
}
|
||||||
|
getState() {
|
||||||
|
return new SnakeModel(35, 35);
|
||||||
|
}
|
||||||
|
getViewHolderClass() {
|
||||||
|
return SnakeView;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SnakePanel = __decorate([
|
||||||
|
Entry
|
||||||
|
], SnakePanel);
|
||||||
|
//# sourceMappingURL=Snake.js.map
|
119
app/src/main/assets/demo/StorageDemo.js
Normal file
119
app/src/main/assets/demo/StorageDemo.js
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var doric = require('doric');
|
||||||
|
|
||||||
|
const colors = [
|
||||||
|
"#70a1ff",
|
||||||
|
"#7bed9f",
|
||||||
|
"#ff6b81",
|
||||||
|
"#a4b0be",
|
||||||
|
"#f0932b",
|
||||||
|
"#eb4d4b",
|
||||||
|
"#6ab04c",
|
||||||
|
"#e056fd",
|
||||||
|
"#686de0",
|
||||||
|
"#30336b",
|
||||||
|
].map(e => doric.Color.parse(e));
|
||||||
|
function label(str) {
|
||||||
|
return doric.text({
|
||||||
|
text: str,
|
||||||
|
textSize: 16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var __decorate = (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;
|
||||||
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||||
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||||
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||||
|
};
|
||||||
|
const storedKey = 'StoredKey';
|
||||||
|
const zone = 'StorageDemo';
|
||||||
|
let StorageDemo = class StorageDemo extends doric.Panel {
|
||||||
|
update() {
|
||||||
|
doric.storage(context).getItem(storedKey, zone).then(e => {
|
||||||
|
this.stored.text = e || "";
|
||||||
|
doric.log('Called in then');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
build(root) {
|
||||||
|
doric.scroller(doric.vlayout([
|
||||||
|
doric.text({
|
||||||
|
text: "Storage Demo",
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[1],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
}),
|
||||||
|
label('Stored'),
|
||||||
|
doric.text({
|
||||||
|
layoutConfig: doric.layoutConfig().w(doric.LayoutSpec.AT_MOST),
|
||||||
|
textSize: 20,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
backgroundColor: colors[3],
|
||||||
|
textAlignment: doric.gravity().center(),
|
||||||
|
height: 50,
|
||||||
|
}).also(it => this.stored = it),
|
||||||
|
label('store a value').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.storage(context).getItem(storedKey, zone).then(e => {
|
||||||
|
doric.modal(context).prompt({
|
||||||
|
text: e,
|
||||||
|
title: "Please input text to store",
|
||||||
|
defaultText: "Default Value",
|
||||||
|
}).then(text => {
|
||||||
|
doric.storage(context).setItem(storedKey, text, zone).then(() => {
|
||||||
|
this.update();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
label('remove value').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.storage(context).remove(storedKey, zone).then(e => {
|
||||||
|
this.update();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
label('clear values').apply({
|
||||||
|
width: 200,
|
||||||
|
height: 50,
|
||||||
|
backgroundColor: colors[0],
|
||||||
|
textSize: 30,
|
||||||
|
textColor: doric.Color.WHITE,
|
||||||
|
layoutConfig: doric.layoutConfig().exactly(),
|
||||||
|
onClick: () => {
|
||||||
|
doric.storage(context).clear(zone).then(e => {
|
||||||
|
this.update();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost().h(doric.LayoutSpec.WRAP_CONTENT),
|
||||||
|
gravity: doric.gravity().center(),
|
||||||
|
space: 10,
|
||||||
|
})).apply({
|
||||||
|
layoutConfig: doric.layoutConfig().atmost(),
|
||||||
|
}).in(root);
|
||||||
|
this.update();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
StorageDemo = __decorate([
|
||||||
|
Entry
|
||||||
|
], StorageDemo);
|
||||||
|
//# sourceMappingURL=StorageDemo.js.map
|
33
build.gradle
33
build.gradle
@ -23,8 +23,41 @@ allprojects {
|
|||||||
}
|
}
|
||||||
maven { url 'https://jitpack.io' }
|
maven { url 'https://jitpack.io' }
|
||||||
}
|
}
|
||||||
|
def needReplaceLocal = true
|
||||||
|
gradle.startParameter.taskNames.each {
|
||||||
|
if (it.contains('uploadArchives')) {
|
||||||
|
needReplaceLocal = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (needReplaceLocal) {
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy {
|
||||||
|
dependencySubstitution {
|
||||||
|
substitute module('pub.doric:core') with project(":doric")
|
||||||
|
substitute module('pub.doric:devkit') with project(":devkit")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task clean(type: Delete) {
|
task clean(type: Delete) {
|
||||||
delete rootProject.buildDir
|
delete rootProject.buildDir
|
||||||
}
|
}
|
||||||
|
Properties properties = new Properties()
|
||||||
|
properties.load(project.rootProject.file('version.properties').newDataInputStream())
|
||||||
|
ext {
|
||||||
|
Version = properties.version
|
||||||
|
}
|
||||||
|
|
||||||
|
task publisCore dependsOn(":doric:uploadArchives") {
|
||||||
|
println "doric published"
|
||||||
|
}
|
||||||
|
|
||||||
|
task publishDevKit dependsOn(publisCore, ":devkit:uploadArchives") {
|
||||||
|
println "devkit published"
|
||||||
|
}
|
||||||
|
|
||||||
|
task PublishAll dependsOn(publisCore, publishDevKit) {
|
||||||
|
println "All published"
|
||||||
|
}
|
||||||
|
@ -33,7 +33,7 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
|
||||||
implementation 'com.github.pengfeizhou:jsc4a:0.1.0'
|
implementation "pub.doric:core:${rootProject.ext.Version}"
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation "com.google.android.material:material:1.0.0"
|
implementation "com.google.android.material:material:1.0.0"
|
||||||
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
|
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
|
||||||
@ -43,9 +43,6 @@ dependencies {
|
|||||||
implementation "io.reactivex.rxjava2:rxjava:2.2.15"
|
implementation "io.reactivex.rxjava2:rxjava:2.2.15"
|
||||||
api 'org.greenrobot:eventbus:3.1.1'
|
api 'org.greenrobot:eventbus:3.1.1'
|
||||||
implementation 'com.lahm.library:easy-protector-release:1.1.0'
|
implementation 'com.lahm.library:easy-protector-release:1.1.0'
|
||||||
api 'org.nanohttpd:nanohttpd:2.3.1'
|
|
||||||
api project(':doric')
|
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||||
|
3
devkit/pom.properties
Normal file
3
devkit/pom.properties
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
name=DoricDevKit
|
||||||
|
groupId=pub.doric
|
||||||
|
artifactId=devkit
|
@ -1,181 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
package pub.doric.devkit;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.AssetManager;
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.webkit.MimeTypeMap;
|
|
||||||
|
|
||||||
import com.github.pengfeizhou.jscore.JSONBuilder;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.Inet4Address;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.NetworkInterface;
|
|
||||||
import java.net.SocketException;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import fi.iki.elonen.NanoHTTPD;
|
|
||||||
import pub.doric.DoricContext;
|
|
||||||
import pub.doric.DoricContextManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: com.github.penfeizhou.doricdemo
|
|
||||||
* @Author: pengfei.zhou
|
|
||||||
* @CreateDate: 2019-08-03
|
|
||||||
*/
|
|
||||||
public class LocalServer extends NanoHTTPD {
|
|
||||||
private final Context context;
|
|
||||||
private Map<String, APICommand> commandMap = new HashMap<>();
|
|
||||||
|
|
||||||
public LocalServer(Context context, int port) {
|
|
||||||
super(port);
|
|
||||||
this.context = context;
|
|
||||||
commandMap.put("allContexts", new APICommand() {
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "allContexts";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object exec(IHTTPSession session) {
|
|
||||||
Collection<DoricContext> ret = DoricContextManager.aliveContexts();
|
|
||||||
JSONArray jsonArray = new JSONArray();
|
|
||||||
for (DoricContext doricContext : ret) {
|
|
||||||
JSONBuilder jsonBuilder = new JSONBuilder();
|
|
||||||
jsonBuilder.put("source", doricContext.getSource());
|
|
||||||
jsonBuilder.put("id", doricContext.getContextId());
|
|
||||||
jsonArray.put(jsonBuilder.toJSONObject());
|
|
||||||
}
|
|
||||||
return jsonArray;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
commandMap.put("context", new APICommand() {
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "context";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object exec(IHTTPSession session) {
|
|
||||||
String id = session.getParms().get("id");
|
|
||||||
DoricContext doricContext = DoricContextManager.getContext(id);
|
|
||||||
if (doricContext != null) {
|
|
||||||
return new JSONBuilder()
|
|
||||||
.put("id", doricContext.getContextId())
|
|
||||||
.put("source", doricContext.getSource())
|
|
||||||
.put("script", doricContext.getScript())
|
|
||||||
.toJSONObject();
|
|
||||||
}
|
|
||||||
return "{}";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
commandMap.put("reload", new APICommand() {
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "reload";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object exec(IHTTPSession session) {
|
|
||||||
Map<String, String> files = new HashMap<>();
|
|
||||||
try {
|
|
||||||
session.parseBody(files);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
String id = session.getParms().get("id");
|
|
||||||
DoricContext doricContext = DoricContextManager.getContext(id);
|
|
||||||
if (doricContext != null) {
|
|
||||||
try {
|
|
||||||
JSONObject jsonObject = new JSONObject(files.get("postData"));
|
|
||||||
doricContext.reload(jsonObject.optString("script"));
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return "success";
|
|
||||||
}
|
|
||||||
return "fail";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getIpAddressString() {
|
|
||||||
try {
|
|
||||||
for (Enumeration<NetworkInterface> enNetI = NetworkInterface
|
|
||||||
.getNetworkInterfaces(); enNetI.hasMoreElements(); ) {
|
|
||||||
NetworkInterface netI = enNetI.nextElement();
|
|
||||||
for (Enumeration<InetAddress> enumIpAddr = netI
|
|
||||||
.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
|
|
||||||
InetAddress inetAddress = enumIpAddr.nextElement();
|
|
||||||
if (inetAddress instanceof Inet4Address && !inetAddress.isLoopbackAddress()) {
|
|
||||||
return inetAddress.getHostAddress();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (SocketException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return "0.0.0.0";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start() throws IOException {
|
|
||||||
super.start();
|
|
||||||
Log.d("Debugger", String.format("Open http://%s:8910/index.html to start debug", getIpAddressString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response serve(IHTTPSession session) {
|
|
||||||
Uri uri = Uri.parse(session.getUri());
|
|
||||||
List<String> segments = uri.getPathSegments();
|
|
||||||
if (segments.size() > 1 && "api".equals(segments.get(0))) {
|
|
||||||
String cmd = segments.get(1);
|
|
||||||
APICommand apiCommand = commandMap.get(cmd);
|
|
||||||
if (apiCommand != null) {
|
|
||||||
Object ret = apiCommand.exec(session);
|
|
||||||
return NanoHTTPD.newFixedLengthResponse(Response.Status.OK, "application/json", ret.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String fileName = session.getUri().substring(1);
|
|
||||||
AssetManager assetManager = context.getAssets();
|
|
||||||
try {
|
|
||||||
InputStream inputStream = assetManager.open("debugger/" + fileName);
|
|
||||||
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileName.substring(fileName.lastIndexOf(".") + 1));
|
|
||||||
return NanoHTTPD.newFixedLengthResponse(Response.Status.OK, mimeType, inputStream, inputStream.available());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return NanoHTTPD.newFixedLengthResponse(Response.Status.OK, "text/html", "HelloWorld");
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface APICommand {
|
|
||||||
String name();
|
|
||||||
|
|
||||||
Object exec(IHTTPSession session);
|
|
||||||
}
|
|
||||||
}
|
|
4
doric/pom.properties
Normal file
4
doric/pom.properties
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name=Doric
|
||||||
|
groupId=pub.doric
|
||||||
|
artifactId=core
|
||||||
|
version=0.1.0
|
2
doric/src/main/assets/bundle/.gitignore
vendored
2
doric/src/main/assets/bundle/.gitignore
vendored
@ -1 +1 @@
|
|||||||
*.js
|
*.js
|
1921
doric/src/main/assets/bundle/doric-lib.js
Normal file
1921
doric/src/main/assets/bundle/doric-lib.js
Normal file
File diff suppressed because it is too large
Load Diff
1474
doric/src/main/assets/bundle/doric-sandbox.js
Normal file
1474
doric/src/main/assets/bundle/doric-sandbox.js
Normal file
File diff suppressed because it is too large
Load Diff
3450
doric/src/main/assets/bundle/doric-vm.js
Normal file
3450
doric/src/main/assets/bundle/doric-vm.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -339,6 +339,11 @@ public abstract class ViewNode<T extends View> extends DoricContextHolder {
|
|||||||
setRotation(prop.asNumber().toFloat());
|
setRotation(prop.asNumber().toFloat());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "padding":
|
||||||
|
if (prop.isObject()) {
|
||||||
|
setPadding(prop.asObject());
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -409,6 +414,19 @@ public abstract class ViewNode<T extends View> extends DoricContextHolder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setPadding(JSObject paddings) {
|
||||||
|
JSValue left = paddings.getProperty("left");
|
||||||
|
JSValue right = paddings.getProperty("right");
|
||||||
|
JSValue top = paddings.getProperty("top");
|
||||||
|
JSValue bottom = paddings.getProperty("bottom");
|
||||||
|
mView.setPadding(
|
||||||
|
left.isNumber() ? DoricUtils.dp2px(left.asNumber().toFloat()) : 0,
|
||||||
|
top.isNumber() ? DoricUtils.dp2px(top.asNumber().toFloat()) : 0,
|
||||||
|
right.isNumber() ? DoricUtils.dp2px(right.asNumber().toFloat()) : 0,
|
||||||
|
bottom.isNumber() ? DoricUtils.dp2px(bottom.asNumber().toFloat()) : 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private void blendLayoutConfig(JSObject jsObject) {
|
private void blendLayoutConfig(JSObject jsObject) {
|
||||||
JSValue margin = jsObject.getProperty("margin");
|
JSValue margin = jsObject.getProperty("margin");
|
||||||
JSValue widthSpec = jsObject.getProperty("widthSpec");
|
JSValue widthSpec = jsObject.getProperty("widthSpec");
|
||||||
|
@ -44,6 +44,7 @@ public class FlowLayoutNode extends SuperNode<RecyclerView> {
|
|||||||
StaggeredGridLayoutManager.VERTICAL);
|
StaggeredGridLayoutManager.VERTICAL);
|
||||||
private int columnSpace = 0;
|
private int columnSpace = 0;
|
||||||
private int rowSpace = 0;
|
private int rowSpace = 0;
|
||||||
|
private Rect padding = new Rect();
|
||||||
private final RecyclerView.ItemDecoration spacingItemDecoration = new RecyclerView.ItemDecoration() {
|
private final RecyclerView.ItemDecoration spacingItemDecoration = new RecyclerView.ItemDecoration() {
|
||||||
@Override
|
@Override
|
||||||
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
|
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
|
||||||
@ -80,11 +81,9 @@ public class FlowLayoutNode extends SuperNode<RecyclerView> {
|
|||||||
switch (name) {
|
switch (name) {
|
||||||
case "columnSpace":
|
case "columnSpace":
|
||||||
columnSpace = DoricUtils.dp2px(prop.asNumber().toFloat());
|
columnSpace = DoricUtils.dp2px(prop.asNumber().toFloat());
|
||||||
mView.setPadding(-columnSpace / 2, mView.getPaddingTop(), -columnSpace / 2, mView.getPaddingBottom());
|
|
||||||
break;
|
break;
|
||||||
case "rowSpace":
|
case "rowSpace":
|
||||||
rowSpace = DoricUtils.dp2px(prop.asNumber().toFloat());
|
rowSpace = DoricUtils.dp2px(prop.asNumber().toFloat());
|
||||||
mView.setPadding(mView.getPaddingLeft(), -rowSpace / 2, mView.getPaddingRight(), -rowSpace / 2);
|
|
||||||
break;
|
break;
|
||||||
case "columnCount":
|
case "columnCount":
|
||||||
staggeredGridLayoutManager.setSpanCount(prop.asNumber().toInt());
|
staggeredGridLayoutManager.setSpanCount(prop.asNumber().toInt());
|
||||||
@ -107,9 +106,26 @@ public class FlowLayoutNode extends SuperNode<RecyclerView> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setPadding(JSObject jsObject) {
|
||||||
|
JSValue left = jsObject.getProperty("left");
|
||||||
|
JSValue right = jsObject.getProperty("right");
|
||||||
|
JSValue top = jsObject.getProperty("top");
|
||||||
|
JSValue bottom = jsObject.getProperty("bottom");
|
||||||
|
padding.left = left.isNumber() ? DoricUtils.dp2px(left.asNumber().toFloat()) : 0;
|
||||||
|
padding.top = top.isNumber() ? DoricUtils.dp2px(top.asNumber().toFloat()) : 0;
|
||||||
|
padding.right = right.isNumber() ? DoricUtils.dp2px(right.asNumber().toFloat()) : 0;
|
||||||
|
padding.bottom = bottom.isNumber() ? DoricUtils.dp2px(bottom.asNumber().toFloat()) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void blend(JSObject jsObject) {
|
public void blend(JSObject jsObject) {
|
||||||
super.blend(jsObject);
|
super.blend(jsObject);
|
||||||
|
mView.setPadding(
|
||||||
|
padding.left - columnSpace / 2,
|
||||||
|
padding.top - rowSpace / 2,
|
||||||
|
padding.right - columnSpace / 2,
|
||||||
|
padding.bottom - rowSpace / 2);
|
||||||
if (mView != null) {
|
if (mView != null) {
|
||||||
mView.post(new Runnable() {
|
mView.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package pub.doric.shader.slider;
|
package pub.doric.shader.slider;
|
||||||
|
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
import com.github.pengfeizhou.jscore.JSObject;
|
import com.github.pengfeizhou.jscore.JSObject;
|
||||||
@ -50,7 +51,7 @@ public class SlideItemNode extends StackNode {
|
|||||||
@Override
|
@Override
|
||||||
public void blend(JSObject jsObject) {
|
public void blend(JSObject jsObject) {
|
||||||
super.blend(jsObject);
|
super.blend(jsObject);
|
||||||
getNodeView().getLayoutParams().width = getLayoutParams().width;
|
getNodeView().getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
getNodeView().getLayoutParams().height = getLayoutParams().height;
|
getNodeView().getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
scripts/maven.properties
Normal file
2
scripts/maven.properties
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
git=https://github.com/doric-pub/doric
|
||||||
|
site=https://github.com/doric-pub/doric
|
39
scripts/upload.gradle
Normal file
39
scripts/upload.gradle
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
apply plugin: 'maven'
|
||||||
|
|
||||||
|
Properties properties = new Properties()
|
||||||
|
properties.load(project.rootProject.file('scripts/maven.properties').newDataInputStream())
|
||||||
|
properties.load(new FileInputStream("${projectDir}/pom.properties"))
|
||||||
|
properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
||||||
|
|
||||||
|
apply plugin: 'maven'
|
||||||
|
|
||||||
|
uploadArchives {
|
||||||
|
repositories {
|
||||||
|
mavenDeployer {
|
||||||
|
pom.groupId = properties.groupId
|
||||||
|
pom.artifactId = properties.artifactId
|
||||||
|
pom.version = rootProject.ext.Version
|
||||||
|
|
||||||
|
pom.project {
|
||||||
|
description 'git rev-parse HEAD'.execute([], projectDir).text.trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
repository(url: properties.releasesRepository + properties.name) {
|
||||||
|
authentication(userName: properties.user, password: properties.apiKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task uploadAar {
|
||||||
|
dependsOn clean, uploadArchives
|
||||||
|
}
|
||||||
|
|
||||||
|
//task androidSourcesJar(type: Jar) {
|
||||||
|
// classifier = "sources"
|
||||||
|
// from android.sourceSets.main.java.sourceFiles
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//artifacts {
|
||||||
|
// archives androidSourcesJar
|
||||||
|
//}
|
1
version.properties
Normal file
1
version.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
version=0.1.0
|
Reference in New Issue
Block a user