feat:complete the implement of JSX
This commit is contained in:
parent
266d20782a
commit
bec0d44af0
@ -4,9 +4,12 @@ import {
|
|||||||
Panel,
|
Panel,
|
||||||
Gravity,
|
Gravity,
|
||||||
Group,
|
Group,
|
||||||
LayoutSpec,
|
layoutConfig,
|
||||||
Text,
|
Text,
|
||||||
makeRef,
|
makeRef,
|
||||||
|
Stack,
|
||||||
|
Color,
|
||||||
|
modal,
|
||||||
} from "doric";
|
} from "doric";
|
||||||
|
|
||||||
function createFragment() {
|
function createFragment() {
|
||||||
@ -27,27 +30,24 @@ class Counter extends Panel {
|
|||||||
<VLayout
|
<VLayout
|
||||||
space={20}
|
space={20}
|
||||||
gravity={Gravity.Center}
|
gravity={Gravity.Center}
|
||||||
layoutConfig={{
|
layoutConfig={layoutConfig().fit().configAlignment(Gravity.Center)}
|
||||||
widthSpec: LayoutSpec.MOST,
|
|
||||||
heightSpec: LayoutSpec.MOST,
|
|
||||||
}}
|
|
||||||
parent={root}
|
parent={root}
|
||||||
>
|
>
|
||||||
<Text text={`${count}`} textSize={40} ref={ref} />
|
<Text textSize={40} ref={ref}>
|
||||||
|
{`${count}`}
|
||||||
|
</Text>
|
||||||
<Text
|
<Text
|
||||||
text="Click to count"
|
|
||||||
textSize={20}
|
textSize={20}
|
||||||
|
text="Click to count"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
count++;
|
count++;
|
||||||
ref.current.text = `${count}`;
|
ref.current.text = `${count}`;
|
||||||
}}
|
}}
|
||||||
/>
|
></Text>
|
||||||
|
{fragments}
|
||||||
{fragments}
|
{fragments}
|
||||||
{[0, 1, 2, 3].map((i) => (
|
{[0, 1, 2, 3].map((i) => (
|
||||||
<>
|
|
||||||
<Text text={`Index ${i}`} />
|
<Text text={`Index ${i}`} />
|
||||||
<Text text={`Subtitle ${i}`} textSize={10} />
|
|
||||||
</>
|
|
||||||
))}
|
))}
|
||||||
</VLayout>;
|
</VLayout>;
|
||||||
}
|
}
|
||||||
|
@ -700,6 +700,25 @@ var Group = /** @class */ (function (_super) {
|
|||||||
this.children.push(view);
|
this.children.push(view);
|
||||||
this.dirtyProps.children = this.children.map(function (e) { return e.viewId; });
|
this.dirtyProps.children = this.children.map(function (e) { return e.viewId; });
|
||||||
};
|
};
|
||||||
|
Group.prototype.addInnerElement = function (e) {
|
||||||
|
var _this = this;
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(function (e) { return _this.addInnerElement(e); });
|
||||||
|
}
|
||||||
|
else if (e instanceof View) {
|
||||||
|
this.addChild(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loge("Not allowed to add " + typeof e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(Group.prototype, "innerElement", {
|
||||||
|
set: function (e) {
|
||||||
|
this.addInnerElement(e);
|
||||||
|
},
|
||||||
|
enumerable: false,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
return Group;
|
return Group;
|
||||||
}(Superview));
|
}(Superview));
|
||||||
|
|
||||||
@ -1887,6 +1906,13 @@ var Text = /** @class */ (function (_super) {
|
|||||||
function Text() {
|
function Text() {
|
||||||
return _super !== null && _super.apply(this, arguments) || this;
|
return _super !== null && _super.apply(this, arguments) || this;
|
||||||
}
|
}
|
||||||
|
Object.defineProperty(Text.prototype, "innerElement", {
|
||||||
|
set: function (e) {
|
||||||
|
this.text = e;
|
||||||
|
},
|
||||||
|
enumerable: false,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
__decorate$a([
|
__decorate$a([
|
||||||
Property,
|
Property,
|
||||||
__metadata$a("design:type", String)
|
__metadata$a("design:type", String)
|
||||||
@ -2500,6 +2526,13 @@ var Scroller = /** @class */ (function (_super) {
|
|||||||
Scroller.prototype.scrollBy = function (context, offset, animated) {
|
Scroller.prototype.scrollBy = function (context, offset, animated) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset: offset, animated: animated });
|
return this.nativeChannel(context, "scrollBy")({ offset: offset, animated: animated });
|
||||||
};
|
};
|
||||||
|
Object.defineProperty(Scroller.prototype, "innerElement", {
|
||||||
|
set: function (e) {
|
||||||
|
this.content = e;
|
||||||
|
},
|
||||||
|
enumerable: false,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
__decorate$6([
|
__decorate$6([
|
||||||
Property,
|
Property,
|
||||||
__metadata$6("design:type", Object)
|
__metadata$6("design:type", Object)
|
||||||
@ -2576,6 +2609,19 @@ var Refreshable = /** @class */ (function (_super) {
|
|||||||
this.dirtyProps.header = (this.header || {}).viewId;
|
this.dirtyProps.header = (this.header || {}).viewId;
|
||||||
return _super.prototype.toModel.call(this);
|
return _super.prototype.toModel.call(this);
|
||||||
};
|
};
|
||||||
|
Object.defineProperty(Refreshable.prototype, "innerElement", {
|
||||||
|
set: function (e) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.header = e[0];
|
||||||
|
this.content = e[1];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: false,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
__decorate$5([
|
__decorate$5([
|
||||||
Property,
|
Property,
|
||||||
__metadata$5("design:type", Function)
|
__metadata$5("design:type", Function)
|
||||||
@ -2699,20 +2745,6 @@ var __extends$7 = (undefined && undefined.__extends) || (function () {
|
|||||||
})();
|
})();
|
||||||
exports.jsx = void 0;
|
exports.jsx = void 0;
|
||||||
(function (jsx) {
|
(function (jsx) {
|
||||||
function addElement(group, v) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(function (e) { return addElement(group, e); });
|
|
||||||
}
|
|
||||||
else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(function (e) { return addElement(group, e); });
|
|
||||||
}
|
|
||||||
else if (v instanceof View) {
|
|
||||||
group.addChild(v);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error("Can only use view as child");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function createElement(constructor, config) {
|
function createElement(constructor, config) {
|
||||||
var arguments$1 = arguments;
|
var arguments$1 = arguments;
|
||||||
|
|
||||||
@ -2721,18 +2753,22 @@ exports.jsx = void 0;
|
|||||||
children[_i - 2] = arguments$1[_i];
|
children[_i - 2] = arguments$1[_i];
|
||||||
}
|
}
|
||||||
var e = new constructor();
|
var e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit();
|
e.layoutConfig = layoutConfig().fit();
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config);
|
e.apply(config);
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach(function (child) {
|
children = children[0];
|
||||||
addElement(e, child);
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Error("Can only add child to group view, do not support " + constructor.name);
|
throw new Error("Do not support " + constructor.name + " for " + children);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
@ -561,6 +561,20 @@ class Group extends Superview {
|
|||||||
removeAllChildren() {
|
removeAllChildren() {
|
||||||
this.children.length = 0;
|
this.children.length = 0;
|
||||||
}
|
}
|
||||||
|
addInnerElement(e) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e));
|
||||||
|
}
|
||||||
|
else if (e instanceof View) {
|
||||||
|
this.addChild(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.addInnerElement(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const SPECIFIED = 1;
|
const SPECIFIED = 1;
|
||||||
@ -1399,6 +1413,9 @@ exports.TruncateAt = void 0;
|
|||||||
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
||||||
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
||||||
class Text extends View {
|
class Text extends View {
|
||||||
|
set innerElement(e) {
|
||||||
|
this.text = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$a([
|
__decorate$a([
|
||||||
Property,
|
Property,
|
||||||
@ -1900,6 +1917,9 @@ class Scroller extends Superview {
|
|||||||
scrollBy(context, offset, animated) {
|
scrollBy(context, offset, animated) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$6([
|
__decorate$6([
|
||||||
Property,
|
Property,
|
||||||
@ -1956,6 +1976,15 @@ class Refreshable extends Superview {
|
|||||||
this.dirtyProps.header = (this.header || {}).viewId;
|
this.dirtyProps.header = (this.header || {}).viewId;
|
||||||
return super.toModel();
|
return super.toModel();
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.header = e[0];
|
||||||
|
this.content = e[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$5([
|
__decorate$5([
|
||||||
Property,
|
Property,
|
||||||
@ -2062,34 +2091,24 @@ exports.Display = void 0;
|
|||||||
|
|
||||||
exports.jsx = void 0;
|
exports.jsx = void 0;
|
||||||
(function (jsx) {
|
(function (jsx) {
|
||||||
function addElement(group, v) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof View) {
|
|
||||||
group.addChild(v);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error(`Can only use view as child`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function createElement(constructor, config, ...children) {
|
function createElement(constructor, config, ...children) {
|
||||||
const e = new constructor();
|
const e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit();
|
e.layoutConfig = layoutConfig().fit();
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config);
|
e.apply(config);
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach((child) => {
|
children = children[0];
|
||||||
addElement(e, child);
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Error(`Can only add child to group view, do not support ${constructor.name}`);
|
throw new Error(`Do not support ${constructor.name} for ${children}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
@ -2085,6 +2085,20 @@ class Group extends Superview {
|
|||||||
removeAllChildren() {
|
removeAllChildren() {
|
||||||
this.children.length = 0;
|
this.children.length = 0;
|
||||||
}
|
}
|
||||||
|
addInnerElement(e) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e));
|
||||||
|
}
|
||||||
|
else if (e instanceof View) {
|
||||||
|
this.addChild(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.addInnerElement(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const SPECIFIED = 1;
|
const SPECIFIED = 1;
|
||||||
@ -2923,6 +2937,9 @@ exports.TruncateAt = void 0;
|
|||||||
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
||||||
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
||||||
class Text extends View {
|
class Text extends View {
|
||||||
|
set innerElement(e) {
|
||||||
|
this.text = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$a([
|
__decorate$a([
|
||||||
Property,
|
Property,
|
||||||
@ -3424,6 +3441,9 @@ class Scroller extends Superview {
|
|||||||
scrollBy(context, offset, animated) {
|
scrollBy(context, offset, animated) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$6([
|
__decorate$6([
|
||||||
Property,
|
Property,
|
||||||
@ -3480,6 +3500,15 @@ class Refreshable extends Superview {
|
|||||||
this.dirtyProps.header = (this.header || {}).viewId;
|
this.dirtyProps.header = (this.header || {}).viewId;
|
||||||
return super.toModel();
|
return super.toModel();
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.header = e[0];
|
||||||
|
this.content = e[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$5([
|
__decorate$5([
|
||||||
Property,
|
Property,
|
||||||
@ -3586,34 +3615,24 @@ exports.Display = void 0;
|
|||||||
|
|
||||||
exports.jsx = void 0;
|
exports.jsx = void 0;
|
||||||
(function (jsx) {
|
(function (jsx) {
|
||||||
function addElement(group, v) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof View) {
|
|
||||||
group.addChild(v);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error(`Can only use view as child`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function createElement(constructor, config, ...children) {
|
function createElement(constructor, config, ...children) {
|
||||||
const e = new constructor();
|
const e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit();
|
e.layoutConfig = layoutConfig().fit();
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config);
|
e.apply(config);
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach((child) => {
|
children = children[0];
|
||||||
addElement(e, child);
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Error(`Can only add child to group view, do not support ${constructor.name}`);
|
throw new Error(`Do not support ${constructor.name} for ${children}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
22
doric-js/index.d.ts
vendored
22
doric-js/index.d.ts
vendored
@ -323,12 +323,15 @@ declare module 'doric/lib/src/ui/view' {
|
|||||||
clean(): void;
|
clean(): void;
|
||||||
toModel(): NativeViewModel;
|
toModel(): NativeViewModel;
|
||||||
}
|
}
|
||||||
export abstract class Group extends Superview {
|
export type ViewArray = View[];
|
||||||
|
export type ViewFragment = View | ViewArray;
|
||||||
|
export abstract class Group extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
readonly children: View[];
|
readonly children: View[];
|
||||||
allSubviews(): View[];
|
allSubviews(): View[];
|
||||||
addChild(view: View): void;
|
addChild(view: View): void;
|
||||||
removeChild(view: View): void;
|
removeChild(view: View): void;
|
||||||
removeAllChildren(): void;
|
removeAllChildren(): void;
|
||||||
|
set innerElement(e: View | ViewFragment | ViewFragment[] | undefined | null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,7 +511,7 @@ declare module 'doric/lib/src/widget/text' {
|
|||||||
Start = 2,
|
Start = 2,
|
||||||
Clip = 3
|
Clip = 3
|
||||||
}
|
}
|
||||||
export class Text extends View {
|
export class Text extends View implements JSX.ElementChildrenAttribute {
|
||||||
text?: string;
|
text?: string;
|
||||||
textColor?: Color | GradientColor;
|
textColor?: Color | GradientColor;
|
||||||
textSize?: number;
|
textSize?: number;
|
||||||
@ -523,6 +526,7 @@ declare module 'doric/lib/src/widget/text' {
|
|||||||
underline?: boolean;
|
underline?: boolean;
|
||||||
htmlText?: string;
|
htmlText?: string;
|
||||||
truncateAt?: TruncateAt;
|
truncateAt?: TruncateAt;
|
||||||
|
set innerElement(e: string);
|
||||||
}
|
}
|
||||||
export function text(config: Partial<Text>): Text;
|
export function text(config: Partial<Text>): Text;
|
||||||
}
|
}
|
||||||
@ -682,7 +686,7 @@ declare module 'doric/lib/src/widget/scroller' {
|
|||||||
import { Superview, View, NativeViewModel } from 'doric/lib/src/ui/view';
|
import { Superview, View, NativeViewModel } from 'doric/lib/src/ui/view';
|
||||||
import { BridgeContext } from 'doric/lib/src/runtime/global';
|
import { BridgeContext } from 'doric/lib/src/runtime/global';
|
||||||
export function scroller(content: View, config?: Partial<Scroller>): Scroller;
|
export function scroller(content: View, config?: Partial<Scroller>): Scroller;
|
||||||
export class Scroller extends Superview {
|
export class Scroller extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
content: View;
|
content: View;
|
||||||
contentOffset?: {
|
contentOffset?: {
|
||||||
x: number;
|
x: number;
|
||||||
@ -711,13 +715,14 @@ declare module 'doric/lib/src/widget/scroller' {
|
|||||||
x: number;
|
x: number;
|
||||||
y: number;
|
y: number;
|
||||||
}, animated?: boolean): Promise<any>;
|
}, animated?: boolean): Promise<any>;
|
||||||
|
set innerElement(e: View);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'doric/lib/src/widget/refreshable' {
|
declare module 'doric/lib/src/widget/refreshable' {
|
||||||
import { View, Superview, NativeViewModel } from "doric/lib/src/ui/view";
|
import { View, Superview, NativeViewModel } from "doric/lib/src/ui/view";
|
||||||
import { BridgeContext } from "doric/lib/src/runtime/global";
|
import { BridgeContext } from "doric/lib/src/runtime/global";
|
||||||
export class Refreshable extends Superview {
|
export class Refreshable extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
content: View;
|
content: View;
|
||||||
header?: View;
|
header?: View;
|
||||||
onRefresh?: () => void;
|
onRefresh?: () => void;
|
||||||
@ -727,6 +732,7 @@ declare module 'doric/lib/src/widget/refreshable' {
|
|||||||
isRefreshable(context: BridgeContext): Promise<boolean>;
|
isRefreshable(context: BridgeContext): Promise<boolean>;
|
||||||
isRefreshing(context: BridgeContext): Promise<boolean>;
|
isRefreshing(context: BridgeContext): Promise<boolean>;
|
||||||
toModel(): NativeViewModel;
|
toModel(): NativeViewModel;
|
||||||
|
set innerElement(e: View | [View, View]);
|
||||||
}
|
}
|
||||||
export function refreshable(config: Partial<Refreshable>): Refreshable;
|
export function refreshable(config: Partial<Refreshable>): Refreshable;
|
||||||
export interface IPullable {
|
export interface IPullable {
|
||||||
@ -1402,13 +1408,13 @@ declare module 'doric/lib/src/util/jsx' {
|
|||||||
import { Group, View } from "doric/lib/src/ui/view";
|
import { Group, View } from "doric/lib/src/ui/view";
|
||||||
import { ClassType } from "doric/lib/src/util/types";
|
import { ClassType } from "doric/lib/src/util/types";
|
||||||
export namespace jsx {
|
export namespace jsx {
|
||||||
function createElement<T extends View>(constructor: ClassType<T>, config: Partial<T> | null, ...children: View[]): T;
|
function createElement<T extends View>(constructor: ClassType<T>, config: Partial<T> | null, ...children: any[]): any[] | T;
|
||||||
class Fragment extends Group {
|
class Fragment extends Group {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
global {
|
global {
|
||||||
namespace JSX {
|
namespace JSX {
|
||||||
interface IntrinsicElements {
|
interface Element extends View {
|
||||||
}
|
}
|
||||||
interface ElementClass extends View {
|
interface ElementClass extends View {
|
||||||
}
|
}
|
||||||
@ -1416,7 +1422,9 @@ declare module 'doric/lib/src/util/jsx' {
|
|||||||
props: {};
|
props: {};
|
||||||
}
|
}
|
||||||
interface ElementChildrenAttribute {
|
interface ElementChildrenAttribute {
|
||||||
children: View[];
|
innerElement: any;
|
||||||
|
}
|
||||||
|
interface IntrinsicElements {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
doric-js/lib/src/ui/view.d.ts
vendored
6
doric-js/lib/src/ui/view.d.ts
vendored
@ -153,10 +153,14 @@ export declare abstract class Superview extends View {
|
|||||||
clean(): void;
|
clean(): void;
|
||||||
toModel(): NativeViewModel;
|
toModel(): NativeViewModel;
|
||||||
}
|
}
|
||||||
export declare abstract class Group extends Superview {
|
export declare type ViewArray = View[];
|
||||||
|
export declare type ViewFragment = View | ViewArray;
|
||||||
|
export declare abstract class Group extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
readonly children: View[];
|
readonly children: View[];
|
||||||
allSubviews(): View[];
|
allSubviews(): View[];
|
||||||
addChild(view: View): void;
|
addChild(view: View): void;
|
||||||
removeChild(view: View): void;
|
removeChild(view: View): void;
|
||||||
removeAllChildren(): void;
|
removeAllChildren(): void;
|
||||||
|
private addInnerElement;
|
||||||
|
set innerElement(e: View | ViewFragment | ViewFragment[] | undefined | null);
|
||||||
}
|
}
|
||||||
|
@ -443,4 +443,18 @@ export class Group extends Superview {
|
|||||||
removeAllChildren() {
|
removeAllChildren() {
|
||||||
this.children.length = 0;
|
this.children.length = 0;
|
||||||
}
|
}
|
||||||
|
addInnerElement(e) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e));
|
||||||
|
}
|
||||||
|
else if (e instanceof View) {
|
||||||
|
this.addChild(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.addInnerElement(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
8
doric-js/lib/src/util/jsx.d.ts
vendored
8
doric-js/lib/src/util/jsx.d.ts
vendored
@ -1,13 +1,13 @@
|
|||||||
import { Group, View } from "../ui/view";
|
import { Group, View } from "../ui/view";
|
||||||
import { ClassType } from "./types";
|
import { ClassType } from "./types";
|
||||||
export declare namespace jsx {
|
export declare namespace jsx {
|
||||||
function createElement<T extends View>(constructor: ClassType<T>, config: Partial<T> | null, ...children: View[]): T;
|
function createElement<T extends View>(constructor: ClassType<T>, config: Partial<T> | null, ...children: any[]): any[] | T;
|
||||||
class Fragment extends Group {
|
class Fragment extends Group {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declare global {
|
declare global {
|
||||||
namespace JSX {
|
namespace JSX {
|
||||||
interface IntrinsicElements {
|
interface Element extends View {
|
||||||
}
|
}
|
||||||
interface ElementClass extends View {
|
interface ElementClass extends View {
|
||||||
}
|
}
|
||||||
@ -15,7 +15,9 @@ declare global {
|
|||||||
props: {};
|
props: {};
|
||||||
}
|
}
|
||||||
interface ElementChildrenAttribute {
|
interface ElementChildrenAttribute {
|
||||||
children: View[];
|
innerElement: any;
|
||||||
|
}
|
||||||
|
interface IntrinsicElements {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,25 @@
|
|||||||
import { Group, View } from "../ui/view";
|
import { Group } from "../ui/view";
|
||||||
import { layoutConfig } from "./layoutconfig";
|
import { layoutConfig } from "./layoutconfig";
|
||||||
export var jsx;
|
export var jsx;
|
||||||
(function (jsx) {
|
(function (jsx) {
|
||||||
function addElement(group, v) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof View) {
|
|
||||||
group.addChild(v);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error(`Can only use view as child`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function createElement(constructor, config, ...children) {
|
function createElement(constructor, config, ...children) {
|
||||||
const e = new constructor();
|
const e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit();
|
e.layoutConfig = layoutConfig().fit();
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config);
|
e.apply(config);
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach((child) => {
|
children = children[0];
|
||||||
addElement(e, child);
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Error(`Can only add child to group view, do not support ${constructor.name}`);
|
throw new Error(`Do not support ${constructor.name} for ${children}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
3
doric-js/lib/src/widget/refreshable.d.ts
vendored
3
doric-js/lib/src/widget/refreshable.d.ts
vendored
@ -1,6 +1,6 @@
|
|||||||
import { View, Superview, NativeViewModel } from "../ui/view";
|
import { View, Superview, NativeViewModel } from "../ui/view";
|
||||||
import { BridgeContext } from "../runtime/global";
|
import { BridgeContext } from "../runtime/global";
|
||||||
export declare class Refreshable extends Superview {
|
export declare class Refreshable extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
content: View;
|
content: View;
|
||||||
header?: View;
|
header?: View;
|
||||||
onRefresh?: () => void;
|
onRefresh?: () => void;
|
||||||
@ -10,6 +10,7 @@ export declare class Refreshable extends Superview {
|
|||||||
isRefreshable(context: BridgeContext): Promise<boolean>;
|
isRefreshable(context: BridgeContext): Promise<boolean>;
|
||||||
isRefreshing(context: BridgeContext): Promise<boolean>;
|
isRefreshing(context: BridgeContext): Promise<boolean>;
|
||||||
toModel(): NativeViewModel;
|
toModel(): NativeViewModel;
|
||||||
|
set innerElement(e: View | [View, View]);
|
||||||
}
|
}
|
||||||
export declare function refreshable(config: Partial<Refreshable>): Refreshable;
|
export declare function refreshable(config: Partial<Refreshable>): Refreshable;
|
||||||
export interface IPullable {
|
export interface IPullable {
|
||||||
|
@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|||||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||||
};
|
};
|
||||||
import { Property, Superview } from "../ui/view";
|
import { View, Property, Superview } from "../ui/view";
|
||||||
import { layoutConfig } from "../util/layoutconfig";
|
import { layoutConfig } from "../util/layoutconfig";
|
||||||
export class Refreshable extends Superview {
|
export class Refreshable extends Superview {
|
||||||
allSubviews() {
|
allSubviews() {
|
||||||
@ -34,6 +34,15 @@ export class Refreshable extends Superview {
|
|||||||
this.dirtyProps.header = (this.header || {}).viewId;
|
this.dirtyProps.header = (this.header || {}).viewId;
|
||||||
return super.toModel();
|
return super.toModel();
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.header = e[0];
|
||||||
|
this.content = e[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate([
|
__decorate([
|
||||||
Property,
|
Property,
|
||||||
|
3
doric-js/lib/src/widget/scroller.d.ts
vendored
3
doric-js/lib/src/widget/scroller.d.ts
vendored
@ -1,7 +1,7 @@
|
|||||||
import { Superview, View, NativeViewModel } from '../ui/view';
|
import { Superview, View, NativeViewModel } from '../ui/view';
|
||||||
import { BridgeContext } from '../runtime/global';
|
import { BridgeContext } from '../runtime/global';
|
||||||
export declare function scroller(content: View, config?: Partial<Scroller>): Scroller;
|
export declare function scroller(content: View, config?: Partial<Scroller>): Scroller;
|
||||||
export declare class Scroller extends Superview {
|
export declare class Scroller extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
content: View;
|
content: View;
|
||||||
contentOffset?: {
|
contentOffset?: {
|
||||||
x: number;
|
x: number;
|
||||||
@ -30,4 +30,5 @@ export declare class Scroller extends Superview {
|
|||||||
x: number;
|
x: number;
|
||||||
y: number;
|
y: number;
|
||||||
}, animated?: boolean): Promise<any>;
|
}, animated?: boolean): Promise<any>;
|
||||||
|
set innerElement(e: View);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,9 @@ export class Scroller extends Superview {
|
|||||||
scrollBy(context, offset, animated) {
|
scrollBy(context, offset, animated) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate([
|
__decorate([
|
||||||
Property,
|
Property,
|
||||||
|
3
doric-js/lib/src/widget/text.d.ts
vendored
3
doric-js/lib/src/widget/text.d.ts
vendored
@ -7,7 +7,7 @@ export declare enum TruncateAt {
|
|||||||
Start = 2,
|
Start = 2,
|
||||||
Clip = 3
|
Clip = 3
|
||||||
}
|
}
|
||||||
export declare class Text extends View {
|
export declare class Text extends View implements JSX.ElementChildrenAttribute {
|
||||||
text?: string;
|
text?: string;
|
||||||
textColor?: Color | GradientColor;
|
textColor?: Color | GradientColor;
|
||||||
textSize?: number;
|
textSize?: number;
|
||||||
@ -22,5 +22,6 @@ export declare class Text extends View {
|
|||||||
underline?: boolean;
|
underline?: boolean;
|
||||||
htmlText?: string;
|
htmlText?: string;
|
||||||
truncateAt?: TruncateAt;
|
truncateAt?: TruncateAt;
|
||||||
|
set innerElement(e: string);
|
||||||
}
|
}
|
||||||
export declare function text(config: Partial<Text>): Text;
|
export declare function text(config: Partial<Text>): Text;
|
||||||
|
@ -33,6 +33,9 @@ export var TruncateAt;
|
|||||||
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
||||||
})(TruncateAt || (TruncateAt = {}));
|
})(TruncateAt || (TruncateAt = {}));
|
||||||
export class Text extends View {
|
export class Text extends View {
|
||||||
|
set innerElement(e) {
|
||||||
|
this.text = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate([
|
__decorate([
|
||||||
Property,
|
Property,
|
||||||
|
@ -465,6 +465,9 @@ export abstract class Superview extends View {
|
|||||||
return super.toModel()
|
return super.toModel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
export type ViewArray = View[]
|
||||||
|
|
||||||
|
export type ViewFragment = View | ViewArray
|
||||||
|
|
||||||
export abstract class Group extends Superview {
|
export abstract class Group extends Superview {
|
||||||
|
|
||||||
@ -478,5 +481,19 @@ export abstract class Group extends Superview {
|
|||||||
this.children.push(view)
|
this.children.push(view)
|
||||||
this.dirtyProps.children = this.children.map(e => e.viewId)
|
this.dirtyProps.children = this.children.map(e => e.viewId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private addInnerElement(e: View | ViewFragment | ViewFragment[] | undefined | null) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e))
|
||||||
|
} else if (e instanceof View) {
|
||||||
|
this.addChild(e)
|
||||||
|
} else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set innerElement(e: View | ViewFragment | ViewFragment[] | undefined | null) {
|
||||||
|
this.addInnerElement(e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,7 +491,11 @@ export abstract class Superview extends View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export abstract class Group extends Superview {
|
export type ViewArray = View[]
|
||||||
|
|
||||||
|
export type ViewFragment = View | ViewArray
|
||||||
|
|
||||||
|
export abstract class Group extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
|
|
||||||
readonly children: View[] = new Proxy([], {
|
readonly children: View[] = new Proxy([], {
|
||||||
set: (target, index, value) => {
|
set: (target, index, value) => {
|
||||||
@ -519,5 +523,18 @@ export abstract class Group extends Superview {
|
|||||||
removeAllChildren() {
|
removeAllChildren() {
|
||||||
this.children.length = 0
|
this.children.length = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private addInnerElement(e: View | ViewFragment | ViewFragment[] | undefined | null) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e))
|
||||||
|
} else if (e instanceof View) {
|
||||||
|
this.addChild(e)
|
||||||
|
} else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set innerElement(e: View | ViewFragment | ViewFragment[] | undefined | null) {
|
||||||
|
this.addInnerElement(e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,40 +1,31 @@
|
|||||||
import { Group, View } from "../ui/view";
|
import { Group, View } from "../ui/view";
|
||||||
import { layoutConfig } from "./layoutconfig";
|
import { layoutConfig } from "./layoutconfig";
|
||||||
|
import { loge } from "./log";
|
||||||
import { ClassType } from "./types";
|
import { ClassType } from "./types";
|
||||||
|
|
||||||
export namespace jsx {
|
export namespace jsx {
|
||||||
function addElement(group: Group, v: any) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(e => addElement(group, e))
|
|
||||||
} else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(e => addElement(group, e))
|
|
||||||
} else if (v instanceof View) {
|
|
||||||
group.addChild(v)
|
|
||||||
} else {
|
|
||||||
throw new Error(
|
|
||||||
`Can only use view as child`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function createElement<T extends View>(
|
export function createElement<T extends View>(
|
||||||
constructor: ClassType<T>,
|
constructor: ClassType<T>,
|
||||||
config: Partial<T> | null,
|
config: Partial<T> | null,
|
||||||
...children: View[]
|
...children: any[]
|
||||||
) {
|
) {
|
||||||
const e = new constructor();
|
const e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit()
|
e.layoutConfig = layoutConfig().fit()
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config)
|
e.apply(config)
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach((child) => {
|
children = children[0]
|
||||||
addElement(e, child)
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e)
|
||||||
} else {
|
} else {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Can only add child to group view, do not support ${constructor.name}`
|
`Do not support ${constructor.name} for ${children}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,13 +36,14 @@ export namespace jsx {
|
|||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace JSX {
|
namespace JSX {
|
||||||
interface IntrinsicElements { }
|
interface Element extends View { }
|
||||||
interface ElementClass extends View { }
|
interface ElementClass extends View { }
|
||||||
interface ElementAttributesProperty {
|
interface ElementAttributesProperty {
|
||||||
props: {};
|
props: {};
|
||||||
}
|
}
|
||||||
interface ElementChildrenAttribute {
|
interface ElementChildrenAttribute {
|
||||||
children: View[];
|
innerElement: any;
|
||||||
}
|
}
|
||||||
|
interface IntrinsicElements { }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,7 +4,7 @@ import { Scroller } from "./scroller";
|
|||||||
import { BridgeContext } from "../runtime/global";
|
import { BridgeContext } from "../runtime/global";
|
||||||
import { layoutConfig } from "../util/layoutconfig";
|
import { layoutConfig } from "../util/layoutconfig";
|
||||||
|
|
||||||
export class Refreshable extends Superview {
|
export class Refreshable extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
|
|
||||||
content!: View
|
content!: View
|
||||||
|
|
||||||
@ -42,6 +42,15 @@ export class Refreshable extends Superview {
|
|||||||
this.dirtyProps.header = ((this.header || {}) as any).viewId
|
this.dirtyProps.header = ((this.header || {}) as any).viewId
|
||||||
return super.toModel()
|
return super.toModel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set innerElement(e: View | [View, View]) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e
|
||||||
|
} else {
|
||||||
|
this.header = e[0]
|
||||||
|
this.content = e[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function refreshable(config: Partial<Refreshable>) {
|
export function refreshable(config: Partial<Refreshable>) {
|
||||||
|
@ -28,7 +28,7 @@ export function scroller(content: View, config?: Partial<Scroller>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export class Scroller extends Superview {
|
export class Scroller extends Superview implements JSX.ElementChildrenAttribute {
|
||||||
content!: View
|
content!: View
|
||||||
|
|
||||||
@Property
|
@Property
|
||||||
@ -64,4 +64,8 @@ export class Scroller extends Superview {
|
|||||||
scrollBy(context: BridgeContext, offset: { x: number, y: number }, animated?: boolean) {
|
scrollBy(context: BridgeContext, offset: { x: number, y: number }, animated?: boolean) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset, animated })
|
return this.nativeChannel(context, "scrollBy")({ offset, animated })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set innerElement(e: View) {
|
||||||
|
this.content = e
|
||||||
|
}
|
||||||
}
|
}
|
@ -25,7 +25,7 @@ export enum TruncateAt {
|
|||||||
Clip = 3,
|
Clip = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Text extends View {
|
export class Text extends View implements JSX.ElementChildrenAttribute {
|
||||||
@Property
|
@Property
|
||||||
text?: string
|
text?: string
|
||||||
|
|
||||||
@ -67,6 +67,10 @@ export class Text extends View {
|
|||||||
|
|
||||||
@Property
|
@Property
|
||||||
truncateAt?: TruncateAt
|
truncateAt?: TruncateAt
|
||||||
|
|
||||||
|
set innerElement(e: string) {
|
||||||
|
this.text = e
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function text(config: Partial<Text>) {
|
export function text(config: Partial<Text>) {
|
||||||
|
57
doric-web/dist/index.js
vendored
57
doric-web/dist/index.js
vendored
@ -2139,6 +2139,20 @@ class Group extends Superview {
|
|||||||
removeAllChildren() {
|
removeAllChildren() {
|
||||||
this.children.length = 0;
|
this.children.length = 0;
|
||||||
}
|
}
|
||||||
|
addInnerElement(e) {
|
||||||
|
if (e instanceof Array) {
|
||||||
|
e.forEach(e => this.addInnerElement(e));
|
||||||
|
}
|
||||||
|
else if (e instanceof View) {
|
||||||
|
this.addChild(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loge(`Not allowed to add ${typeof e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.addInnerElement(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const SPECIFIED = 1;
|
const SPECIFIED = 1;
|
||||||
@ -2977,6 +2991,9 @@ exports.TruncateAt = void 0;
|
|||||||
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
TruncateAt[TruncateAt["Clip"] = 3] = "Clip";
|
||||||
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
})(exports.TruncateAt || (exports.TruncateAt = {}));
|
||||||
class Text extends View {
|
class Text extends View {
|
||||||
|
set innerElement(e) {
|
||||||
|
this.text = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$a([
|
__decorate$a([
|
||||||
Property,
|
Property,
|
||||||
@ -3478,6 +3495,9 @@ class Scroller extends Superview {
|
|||||||
scrollBy(context, offset, animated) {
|
scrollBy(context, offset, animated) {
|
||||||
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
return this.nativeChannel(context, "scrollBy")({ offset, animated });
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$6([
|
__decorate$6([
|
||||||
Property,
|
Property,
|
||||||
@ -3534,6 +3554,15 @@ class Refreshable extends Superview {
|
|||||||
this.dirtyProps.header = (this.header || {}).viewId;
|
this.dirtyProps.header = (this.header || {}).viewId;
|
||||||
return super.toModel();
|
return super.toModel();
|
||||||
}
|
}
|
||||||
|
set innerElement(e) {
|
||||||
|
if (e instanceof View) {
|
||||||
|
this.content = e;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.header = e[0];
|
||||||
|
this.content = e[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
__decorate$5([
|
__decorate$5([
|
||||||
Property,
|
Property,
|
||||||
@ -3640,34 +3669,24 @@ exports.Display = void 0;
|
|||||||
|
|
||||||
exports.jsx = void 0;
|
exports.jsx = void 0;
|
||||||
(function (jsx) {
|
(function (jsx) {
|
||||||
function addElement(group, v) {
|
|
||||||
if (v instanceof Array) {
|
|
||||||
v.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof Fragment) {
|
|
||||||
v.children.forEach(e => addElement(group, e));
|
|
||||||
}
|
|
||||||
else if (v instanceof View) {
|
|
||||||
group.addChild(v);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error(`Can only use view as child`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function createElement(constructor, config, ...children) {
|
function createElement(constructor, config, ...children) {
|
||||||
const e = new constructor();
|
const e = new constructor();
|
||||||
|
if (e instanceof Fragment) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
e.layoutConfig = layoutConfig().fit();
|
e.layoutConfig = layoutConfig().fit();
|
||||||
if (config) {
|
if (config) {
|
||||||
e.apply(config);
|
e.apply(config);
|
||||||
}
|
}
|
||||||
if (children && children.length > 0) {
|
if (children && children.length > 0) {
|
||||||
if (e instanceof Group) {
|
if (children.length === 1) {
|
||||||
children.forEach((child) => {
|
children = children[0];
|
||||||
addElement(e, child);
|
}
|
||||||
});
|
if (Reflect.has(e, "innerElement")) {
|
||||||
|
Reflect.set(e, "innerElement", children, e);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new Error(`Can only add child to group view, do not support ${constructor.name}`);
|
throw new Error(`Do not support ${constructor.name} for ${children}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
|
2
doric-web/dist/index.js.map
vendored
2
doric-web/dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user