feat:modular add provider

This commit is contained in:
pengfei.zhou 2021-05-14 13:14:54 +08:00 committed by osborn
parent eb7fc6c137
commit 67f3f354af
11 changed files with 79 additions and 6 deletions

View File

@ -209,7 +209,7 @@ var View = /** @class */ (function () {
this.viewId = uniqueId('ViewId'); this.viewId = uniqueId('ViewId');
this.nativeViewModel = { this.nativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
}; };
} }
@ -300,6 +300,9 @@ var View = /** @class */ (function () {
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
View.prototype.viewType = function () {
return this.constructor.name;
};
View.prototype.onPropertyChanged = function (propKey, oldV, newV) { View.prototype.onPropertyChanged = function (propKey, oldV, newV) {
var _this = this; var _this = this;
if (newV instanceof Function) { if (newV instanceof Function) {
@ -3625,6 +3628,17 @@ var Module = /** @class */ (function (_super) {
function Module() { function Module() {
return _super !== null && _super.apply(this, arguments) || this; return _super !== null && _super.apply(this, arguments) || this;
} }
Object.defineProperty(Module.prototype, "provider", {
get: function () {
var _a;
return this.__provider || ((_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.provider);
},
set: function (provider) {
this.__provider = provider;
},
enumerable: false,
configurable: true
});
Module.prototype.dispatchMessage = function (message) { Module.prototype.dispatchMessage = function (message) {
var _a; var _a;
(_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message); (_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message);

View File

@ -148,7 +148,7 @@ class View {
this.__dirty_props__ = {}; this.__dirty_props__ = {};
this.nativeViewModel = { this.nativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
}; };
return new Proxy(this, { return new Proxy(this, {
@ -226,6 +226,9 @@ class View {
get dirtyProps() { get dirtyProps() {
return this.__dirty_props__; return this.__dirty_props__;
} }
viewType() {
return this.constructor.name;
}
onPropertyChanged(propKey, oldV, newV) { onPropertyChanged(propKey, oldV, newV) {
if (newV instanceof Function) { if (newV instanceof Function) {
newV = this.callback2Id(newV); newV = this.callback2Id(newV);
@ -2789,6 +2792,13 @@ class VMPanel extends Panel {
} }
class Module extends Panel { class Module extends Panel {
get provider() {
var _a;
return this.__provider || ((_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.provider);
}
set provider(provider) {
this.__provider = provider;
}
dispatchMessage(message) { dispatchMessage(message) {
var _a; var _a;
(_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message); (_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message);

View File

@ -1669,7 +1669,7 @@ class View {
this.__dirty_props__ = {}; this.__dirty_props__ = {};
this.nativeViewModel = { this.nativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
}; };
return new Proxy(this, { return new Proxy(this, {
@ -1747,6 +1747,9 @@ class View {
get dirtyProps() { get dirtyProps() {
return this.__dirty_props__; return this.__dirty_props__;
} }
viewType() {
return this.constructor.name;
}
onPropertyChanged(propKey, oldV, newV) { onPropertyChanged(propKey, oldV, newV) {
if (newV instanceof Function) { if (newV instanceof Function) {
newV = this.callback2Id(newV); newV = this.callback2Id(newV);
@ -4310,6 +4313,13 @@ class VMPanel extends Panel {
} }
class Module extends Panel { class Module extends Panel {
get provider() {
var _a;
return this.__provider || ((_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.provider);
}
set provider(provider) {
this.__provider = provider;
}
dispatchMessage(message) { dispatchMessage(message) {
var _a; var _a;
(_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message); (_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message);

5
doric-js/index.d.ts vendored
View File

@ -239,6 +239,7 @@ declare module 'doric/lib/src/ui/view' {
[index: string]: Model; [index: string]: Model;
}; };
nativeViewModel: NativeViewModel; nativeViewModel: NativeViewModel;
viewType(): string;
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void; onPropertyChanged(propKey: string, oldV: Model, newV: Model): void;
clean(): void; clean(): void;
isDirty(): boolean; isDirty(): boolean;
@ -1415,8 +1416,12 @@ declare module 'doric/lib/src/pattern/modular' {
import { Panel } from "doric/lib/src/ui/panel"; import { Panel } from "doric/lib/src/ui/panel";
import { Group } from "doric/lib/src/ui/view"; import { Group } from "doric/lib/src/ui/view";
import { ClassType } from "doric/lib/src/util/types"; import { ClassType } from "doric/lib/src/util/types";
import { Provider } from "doric/lib/src/pattern/provider";
export abstract class Module extends Panel { export abstract class Module extends Panel {
superPanel?: ModularPanel; superPanel?: ModularPanel;
__provider?: Provider;
get provider(): Provider | undefined;
set provider(provider: Provider | undefined);
dispatchMessage(message: any): void; dispatchMessage(message: any): void;
onMessage(message: any): void; onMessage(message: any): void;
} }

View File

@ -1,8 +1,12 @@
import { Panel } from "../ui/panel"; import { Panel } from "../ui/panel";
import { Group } from "../ui/view"; import { Group } from "../ui/view";
import { ClassType } from "../util/types"; import { ClassType } from "../util/types";
import { Provider } from "./provider";
export declare abstract class Module extends Panel { export declare abstract class Module extends Panel {
superPanel?: ModularPanel; superPanel?: ModularPanel;
__provider?: Provider;
get provider(): Provider | undefined;
set provider(provider: Provider | undefined);
dispatchMessage(message: any): void; dispatchMessage(message: any): void;
onMessage(message: any): void; onMessage(message: any): void;
} }

View File

@ -1,5 +1,12 @@
import { Panel } from "../ui/panel"; import { Panel } from "../ui/panel";
export class Module extends Panel { export class Module extends Panel {
get provider() {
var _a;
return this.__provider || ((_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.provider);
}
set provider(provider) {
this.__provider = provider;
}
dispatchMessage(message) { dispatchMessage(message) {
var _a; var _a;
(_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message); (_a = this.superPanel) === null || _a === void 0 ? void 0 : _a.dispatchMessage(message);

View File

@ -76,6 +76,7 @@ export declare abstract class View implements Modeling {
[index: string]: Model; [index: string]: Model;
}; };
nativeViewModel: NativeViewModel; nativeViewModel: NativeViewModel;
viewType(): string;
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void; onPropertyChanged(propKey: string, oldV: Model, newV: Model): void;
clean(): void; clean(): void;
isDirty(): boolean; isDirty(): boolean;

View File

@ -30,7 +30,7 @@ export class View {
this.__dirty_props__ = {}; this.__dirty_props__ = {};
this.nativeViewModel = { this.nativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
}; };
return new Proxy(this, { return new Proxy(this, {
@ -108,6 +108,9 @@ export class View {
get dirtyProps() { get dirtyProps() {
return this.__dirty_props__; return this.__dirty_props__;
} }
viewType() {
return this.constructor.name;
}
onPropertyChanged(propKey, oldV, newV) { onPropertyChanged(propKey, oldV, newV) {
if (newV instanceof Function) { if (newV instanceof Function) {
newV = this.callback2Id(newV); newV = this.callback2Id(newV);

View File

@ -1,10 +1,21 @@
import { Panel } from "../ui/panel" import { Panel } from "../ui/panel"
import { Group } from "../ui/view" import { Group } from "../ui/view"
import { ClassType } from "../util/types" import { ClassType } from "../util/types"
import { Provider } from "./provider"
export abstract class Module extends Panel { export abstract class Module extends Panel {
superPanel?: ModularPanel superPanel?: ModularPanel
__provider?: Provider
get provider(): Provider | undefined {
return this.__provider || (this.superPanel?.provider)
}
set provider(provider: Provider | undefined) {
this.__provider = provider
}
dispatchMessage(message: any) { dispatchMessage(message: any) {
this.superPanel?.dispatchMessage(message) this.superPanel?.dispatchMessage(message)
} }

View File

@ -185,10 +185,14 @@ export abstract class View implements Modeling {
nativeViewModel: NativeViewModel = { nativeViewModel: NativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
} }
viewType() {
return this.constructor.name
}
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void { onPropertyChanged(propKey: string, oldV: Model, newV: Model): void {
if (newV instanceof Function) { if (newV instanceof Function) {
newV = this.callback2Id(newV) newV = this.callback2Id(newV)

View File

@ -191,10 +191,14 @@ export abstract class View implements Modeling {
nativeViewModel: NativeViewModel = { nativeViewModel: NativeViewModel = {
id: this.viewId, id: this.viewId,
type: this.constructor.name, type: this.viewType(),
props: this.__dirty_props__, props: this.__dirty_props__,
} }
viewType() {
return this.constructor.name
}
onPropertyChanged(propKey: string, oldV: Model, newV: Model): void { onPropertyChanged(propKey: string, oldV: Model, newV: Model): void {
if (newV instanceof Function) { if (newV instanceof Function) {
newV = this.callback2Id(newV) newV = this.callback2Id(newV)