render-core 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,6 @@ interface RenderBase {
6
6
  getComputed(): {};
7
7
  getMethods(): {};
8
8
  getWatcher(): {};
9
- getExecutor(): {};
10
9
  getBeforeRender(): () => void;
11
10
  getAfterRender(): () => void;
12
11
  getBeforeUpdate(): () => void;
@@ -22,7 +21,6 @@ export declare class Component implements RenderBase {
22
21
  private readonly methods?;
23
22
  private readonly computed?;
24
23
  private readonly watcher?;
25
- private readonly executor?;
26
24
  private readonly beforeRender?;
27
25
  private readonly afterRender?;
28
26
  private readonly beforeUpdate?;
@@ -52,7 +50,6 @@ export declare class Component implements RenderBase {
52
50
  getMethods(): {};
53
51
  getComputed(): {};
54
52
  getWatcher(): {};
55
- getExecutor(): {};
56
53
  getBeforeRender(): () => void;
57
54
  getAfterRender(): () => void;
58
55
  getBeforeUpdate(): () => void;
@@ -39,13 +39,6 @@ var Component = /** @class */ (function () {
39
39
  else {
40
40
  this.watcher = config.watcher;
41
41
  }
42
- //添加处理器属性
43
- if (typeof config.executor == "undefined") {
44
- this.executor = {};
45
- }
46
- else {
47
- this.executor = config.executor;
48
- }
49
42
  //生命周期函数
50
43
  if (typeof config.beforeRender == "undefined") {
51
44
  this.beforeRender = function () { };
@@ -105,9 +98,6 @@ var Component = /** @class */ (function () {
105
98
  Component.prototype.getWatcher = function () {
106
99
  return this.watcher;
107
100
  };
108
- Component.prototype.getExecutor = function () {
109
- return this.executor;
110
- };
111
101
  Component.prototype.getBeforeRender = function () {
112
102
  return this.beforeRender;
113
103
  };
@@ -2,7 +2,6 @@ import { Component } from "./component";
2
2
  export declare class Controller {
3
3
  root: ParentNode;
4
4
  proto: Component;
5
- preRender: boolean;
6
5
  link: Map<string, {}>;
7
6
  to: Controller[];
8
7
  raw_data: {};
@@ -2,7 +2,6 @@ var Controller = /** @class */ (function () {
2
2
  //构造函数
3
3
  function Controller() {
4
4
  this.link = new Map();
5
- this.preRender = false;
6
5
  this.to = [];
7
6
  }
8
7
  //接收器
@@ -0,0 +1,8 @@
1
+ import { Controller } from "./controller";
2
+ export declare class PageController {
3
+ private methods;
4
+ to: Controller[];
5
+ link: Map<string, {}>;
6
+ constructor();
7
+ receiver(method: string, ...args: any[]): void;
8
+ }
@@ -0,0 +1,17 @@
1
+ var PageController = /** @class */ (function () {
2
+ //构造函数
3
+ function PageController() {
4
+ //注入系统方法
5
+ this.methods = Reflect.get(window, "pageMethods");
6
+ this.link = new Map();
7
+ }
8
+ //接收器
9
+ PageController.prototype.receiver = function (method) {
10
+ var args = [];
11
+ for (var _i = 1; _i < arguments.length; _i++) {
12
+ args[_i - 1] = arguments[_i];
13
+ }
14
+ };
15
+ return PageController;
16
+ }());
17
+ export { PageController };
@@ -1,5 +1,6 @@
1
1
  import { Controller } from "../../class/controller";
2
2
  import { Component } from "../../class/component";
3
3
  import { ApiController } from "../../class/apiController";
4
- export declare function initRender(proto: Component, parent: ParentNode, child: Element, tagLib: Map<string, Component>): void;
5
- export declare function findComponent(collection: HTMLCollection, tagLib: Map<string, Component>, link: Controller | ApiController): void;
4
+ import { PageController } from "../../class/pageController";
5
+ export declare function Render(proto: Component, parent: ParentNode, child: Element, link: Controller | ApiController | PageController): void;
6
+ export declare function findComponent(collection: HTMLCollection, link: Controller | ApiController | PageController): void;
@@ -1,87 +1,38 @@
1
- import { loadStyle } from "../../library/loader/loader";
2
- import { addLabel } from "../utility/miscUtility";
3
- import { getProxyObject } from "../proxy/getProxy";
4
- import { Controller } from "../../class/controller";
5
- import { getCodeSpaceForProps, getCodeSpaceForPublish, getCodeSpaceForQuery, getCodeSpaceForRef, getPublishMethod } from "../utility/injectUtility";
6
- import { resolveProps } from "../resolver/props";
7
- import { resolve_Queries } from "../resolver/query";
8
- import { resolver_event } from "../cmd/v-on";
9
- import { resolver_html } from "../cmd/v-html";
10
- import { resolver_txt } from "../cmd/v-txt";
11
- import { resolver_model } from "../cmd/v-model";
12
- import { resolver_Ref } from "../cmd/v-ref";
13
1
  import { isUnKnown } from "../utility/checkUtility";
14
- import { resolver_bind } from "../cmd/v-bind";
15
- import { depthRender } from "./depthRender";
2
+ import { getTemplate } from "../../library/template/template";
3
+ import { styleResolve } from "../../library/style/style";
4
+ import { init_render, post_render, raw_render } from "../../library/render/render";
16
5
  //渲染自定义标签
17
- export function initRender(proto, parent, child, tagLib) {
18
- //生成DOM
19
- var temp = document.createElement("div");
20
- temp.innerHTML = proto.getTemplate();
21
- var template = temp.getElementsByTagName("template")[0];
22
- var content = template.content;
6
+ export function Render(proto, parent, child, link) {
23
7
  //获得模板元素
24
- var tagTemplate = content.firstElementChild;
25
- //解析元素上的静态属性
26
- var props = resolveProps(tagTemplate, proto);
27
- //获得模板样式元素
28
- var tagStyle = content.lastElementChild;
29
- //向head位置添加该组件的样式
30
- loadStyle(tagStyle.childNodes[0].nodeValue, proto.getName());
31
- //获取控制对象
32
- var controller = new Controller();
33
- controller.proto = proto;
34
- //复制原始数据对象到控制对象
35
- controller.raw_data = Object.create(proto.getData());
36
- //注入props
37
- getCodeSpaceForProps(controller.raw_data, resolveProps(tagTemplate.firstElementChild, controller.proto.getProps()));
38
- //注入query
39
- getCodeSpaceForQuery(controller.raw_data, resolve_Queries());
40
- //注入ref
41
- getCodeSpaceForRef(controller.raw_data, resolver_Ref(tagTemplate.children));
42
- //数据渲染对象
43
- controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
44
- //注入receiver
45
- getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
46
- //beforeRender
47
- var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
48
- beforeRender();
49
- //给所有元素添加上npm=tag标志
50
- addLabel(tagTemplate.children, proto.getName());
51
- //将元素事件绑定到元素上
52
- resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
53
- //渲染html
54
- resolver_html(tagTemplate.children, controller.proxyForMethods);
55
- //渲染text
56
- resolver_txt(tagTemplate.children, controller.proxyForMethods);
57
- //绑定数据
58
- resolver_model(tagTemplate.children, controller.proxyForMethods);
59
- //渲染属性
60
- resolver_bind(tagTemplate.children, controller.proxyForMethods);
61
- //beforeMount
62
- var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
63
- beforeMount();
64
- //mount
65
- var renderSpace = document.createElement("div");
66
- controller.root = renderSpace;
67
- parent.replaceChild(renderSpace, child);
68
- while (tagTemplate.hasChildNodes()) {
69
- renderSpace.append(tagTemplate.firstChild);
8
+ var tagTemplate = getTemplate(proto);
9
+ //解析样式
10
+ styleResolve(proto.getName());
11
+ //两种渲染方式
12
+ if (child.hasAttribute("name")) {
13
+ //需要保持状态的渲染
14
+ if (link.link.has(child.getAttribute("name"))) {
15
+ //该name元素存在旧数据,是更新渲染
16
+ init_render(proto, parent, child, link, tagTemplate);
17
+ }
18
+ else {
19
+ //该name元素不存在旧数据,是第一次渲染
20
+ post_render(proto, parent, child, link, tagTemplate);
21
+ }
22
+ }
23
+ else {
24
+ //不需要保持状态的渲染
25
+ raw_render(proto, parent, child, link, tagTemplate);
70
26
  }
71
- //afterRender
72
- var afterRender = proto.getAfterRender().bind(controller.raw_data);
73
- afterRender();
74
- //深度渲染
75
- findComponent(controller.root.children, tagLib, controller);
76
27
  }
77
- //继续渲染
78
- export function findComponent(collection, tagLib, link) {
28
+ //拓展标签深度渲染
29
+ export function findComponent(collection, link) {
79
30
  for (var i = 0; i < collection.length; i++) {
80
31
  if (isUnKnown(collection[i].nodeName)) {
81
- depthRender(tagLib.get(collection[i].nodeName.toUpperCase()), collection[i].parentNode, collection[i], tagLib, link);
32
+ Render(Reflect.get(window, "tagLib").get(collection[i].nodeName.toUpperCase()), collection[i].parentNode, collection[i], link);
82
33
  }
83
34
  else {
84
- findComponent(collection[i].children, tagLib, link);
35
+ findComponent(collection[i].children, link);
85
36
  }
86
37
  }
87
38
  }
@@ -1,2 +1,2 @@
1
1
  import { Controller } from "../../class/controller";
2
- export declare function updateRender(updater: Controller): void;
2
+ export declare function updateRender(controller: Controller): void;
@@ -1,50 +1,41 @@
1
- import { resolver_event } from "../cmd/v-on";
2
- import { resolver_html } from "../cmd/v-html";
3
- import { resolver_txt } from "../cmd/v-txt";
4
- import { resolver_bind } from "../cmd/v-bind";
5
- import { addLabel, bindModelForUpdater } from "../utility/miscUtility";
6
- import { depthFindComponent } from "./depthRender";
7
- export function updateRender(updater) {
1
+ import { bindModelForUpdater } from "../utility/miscUtility";
2
+ import { findComponent } from "./initRender";
3
+ import { getTemplate } from "../../library/template/template";
4
+ import { cmdForUpdate } from "../../library/cmd/cmd";
5
+ export function updateRender(controller) {
8
6
  //生成DOM
9
- var temp = document.createElement("div");
10
- temp.innerHTML = updater.proto.getTemplate();
11
- var template = temp.getElementsByTagName("template")[0];
12
- var tagTemplate = template.content.children[0];
13
- var updateRawData = updater.proxyForMethods;
7
+ var tagTemplate = getTemplate(controller.proto);
8
+ var controllerawData = controller.proxyForMethods;
14
9
  //beforeRender
15
- var beforeRender = updater.proto.getBeforeRender().bind(updateRawData);
10
+ var beforeRender = controller.proto.getBeforeRender().bind(controllerawData);
16
11
  beforeRender();
17
12
  //beforeUpdate
18
- var beforeUpdate = updater.proto.getBeforeUpdate().bind(updateRawData);
13
+ var beforeUpdate = controller.proto.getBeforeUpdate().bind(controllerawData);
19
14
  beforeUpdate();
20
- //updateRender actions
21
- addLabel(tagTemplate.children, updater.proto.getName());
22
- resolver_event(tagTemplate.children, updater.proto.getMethods(), updater.proxyForMethods);
23
- resolver_html(tagTemplate.children, updater.proxyForMethods);
24
- resolver_txt(tagTemplate.children, updater.proxyForMethods);
25
- resolver_bind(tagTemplate.children, updater.proxyForMethods);
15
+ //解析指令
16
+ cmdForUpdate(tagTemplate, controller.proto, controller);
26
17
  //afterUpdate
27
- var afterUpdate = updater.proto.getAfterUpdate().bind(updateRawData);
18
+ var afterUpdate = controller.proto.getAfterUpdate().bind(controllerawData);
28
19
  afterUpdate();
29
20
  //beforeUnmount
30
- var beforeUnmount = updater.proto.getBeforeUnmount().bind(updateRawData);
21
+ var beforeUnmount = controller.proto.getBeforeUnmount().bind(controllerawData);
31
22
  beforeUnmount();
32
23
  //unmount
33
- while (updater.root.hasChildNodes()) {
34
- updater.root.removeChild(updater.root.firstChild);
24
+ while (controller.root.hasChildNodes()) {
25
+ controller.root.removeChild(controller.root.firstChild);
35
26
  }
36
27
  //beforeMount
37
- var beforeMount = updater.proto.getBeforeMount().bind(updateRawData);
28
+ var beforeMount = controller.proto.getBeforeMount().bind(controllerawData);
38
29
  beforeMount();
39
30
  //mount
40
31
  while (tagTemplate.hasChildNodes()) {
41
- updater.root.appendChild(tagTemplate.firstChild);
32
+ controller.root.appendChild(tagTemplate.firstChild);
42
33
  }
43
34
  //afterRender
44
- var afterRender = updater.proto.getAfterRender().bind(updateRawData);
35
+ var afterRender = controller.proto.getAfterRender().bind(controllerawData);
45
36
  afterRender();
46
37
  //获取定位
47
- bindModelForUpdater(updater.root.children, updater.proxyForMethods);
38
+ bindModelForUpdater(controller.root.children, controller.proxyForMethods);
48
39
  //深度渲染
49
- depthFindComponent(updater.root.children, Reflect.get(window, "tagLib"), updater);
40
+ findComponent(controller.root.children, controller);
50
41
  }
@@ -1,10 +1,11 @@
1
1
  import { Controller } from "../../class/controller";
2
2
  import { ApiController } from "../../class/apiController";
3
+ import { PageController } from "../../class/pageController";
3
4
  export declare function getCodeSpaceForProps(data: {}, $props: {}): void;
4
5
  export declare function getCodeSpaceForQuery(data: {}, $query: {}): void;
5
6
  export declare function getCodeSpaceForRef(data: {}, $ref: Map<string, Element>): void;
6
7
  export declare function getApiCodeSpace(data: {}, method: {}): void;
7
- export declare function getCommitMethod(controller: Controller | ApiController): any;
8
+ export declare function getCommitMethod(controller: Controller | ApiController | PageController): any;
8
9
  export declare function getCodeSpaceForCommit(data: {}, commit: any): void;
9
- export declare function getPublishMethod(controller: Controller | ApiController): any;
10
+ export declare function getPublishMethod(controller: Controller | ApiController | PageController): any;
10
11
  export declare function getCodeSpaceForPublish(data: {}, publisher: any): void;
@@ -1,4 +1,2 @@
1
- import { Component } from "../../class/component";
2
1
  export declare function addLabel(nodes: HTMLCollection, component: string): void;
3
- export declare function resolver(element: Element, tagLib: Map<string, Component>): void;
4
2
  export declare function bindModelForUpdater(nodes: HTMLCollection, data: {}): void;
@@ -1,4 +1,3 @@
1
- import { initRender } from "../render/initRender";
2
1
  export function addLabel(nodes, component) {
3
2
  for (var i = 0; i < nodes.length; i++) {
4
3
  nodes[i].setAttribute("cpn", component);
@@ -6,9 +5,6 @@ export function addLabel(nodes, component) {
6
5
  addLabel(kk, component);
7
6
  }
8
7
  }
9
- export function resolver(element, tagLib) {
10
- initRender(tagLib.get(element.nodeName.toUpperCase()), element.parentNode, element, tagLib);
11
- }
12
8
  export function bindModelForUpdater(nodes, data) {
13
9
  for (var i = 0; i < nodes.length; i++) {
14
10
  var result = nodes[i].hasAttribute("v-model");
@@ -1 +1,3 @@
1
+ import { Component } from "../../class/component";
1
2
  export declare function checkStyleLabel(tag: string): boolean;
3
+ export declare function themeStyle(component: Component, styleLib: Map<string, object>): void;
@@ -10,3 +10,14 @@ export function checkStyleLabel(tag) {
10
10
  //样式未加载
11
11
  return false;
12
12
  }
13
+ export function themeStyle(component, styleLib) {
14
+ var template = component.getTemplate();
15
+ var dom = document.createElement("div");
16
+ dom.innerHTML = template;
17
+ var styles = dom.getElementsByTagName("template")[0].content.querySelectorAll("style");
18
+ var kk = new Map();
19
+ for (var i = 0; i < styles.length; i++) {
20
+ kk.set(styles[i].getAttribute("theme"), styles[i].nodeValue);
21
+ }
22
+ styleLib.set(component.getName(), kk);
23
+ }
package/index.d.ts CHANGED
@@ -1,31 +1,13 @@
1
1
  import { Component } from "./class/component";
2
- import routerController from "render-security-tpyescript/class/Router";
2
+ import { routerController } from "render-security/class/Router";
3
3
  export declare class RenderJS {
4
- readonly version: string;
4
+ readonly config: {};
5
5
  readonly tagLib: Map<string, Component>;
6
6
  private routerC;
7
+ private readonly page;
7
8
  constructor();
8
- addTag(component: Component | Component[]): void;
9
9
  addRouter(router: routerController): void;
10
+ addTag(component: Component | Component[]): void;
10
11
  run(): void;
11
- }
12
- export declare class EmbedRenderJs {
13
- private readonly apiComponent;
14
- private controller;
15
- constructor(config: {
16
- name: string;
17
- template: string;
18
- data?: {};
19
- computed?: {};
20
- methods?: {};
21
- watcher?: {};
22
- beforeRender?: () => void;
23
- afterRender?: () => void;
24
- beforeUpdate?: () => void;
25
- afterUpdate?: () => void;
26
- beforeMount?: () => void;
27
- beforeUnmount?: () => void;
28
- });
29
- render(selector: string): void;
30
- commit(method: string, ...args: any[]): any;
12
+ private render;
31
13
  }
package/index.js CHANGED
@@ -1,16 +1,23 @@
1
1
  import { Component } from "./class/component";
2
- import ApiComponent from "./class/apiComponent";
3
2
  import meta from "./meta/meta";
4
3
  import { renderHtml } from "./runtime/runtime";
5
- import { apiRender } from "./core/render/apiRender";
6
- import { ApiController } from "./class/apiController";
4
+ import { themeStyle } from "./core/utility/styleUtility";
5
+ // @ts-ignore
6
+ import { redirect } from "render-security/utility/redirect";
7
+ import { PageController } from "./class/pageController";
7
8
  //页面RenderJs
8
9
  var RenderJS = /** @class */ (function () {
9
10
  //构造函数
10
11
  function RenderJS() {
11
12
  this.tagLib = new Map();
12
- this.version = meta.version;
13
+ this.page = new PageController();
14
+ Reflect.set(this.config, "version", meta.version);
15
+ Reflect.set(this.config, "theme", meta.style);
13
16
  }
17
+ //添加路由器
18
+ RenderJS.prototype.addRouter = function (router) {
19
+ this.routerC = router;
20
+ };
14
21
  //添加自定义标签
15
22
  RenderJS.prototype.addTag = function (component) {
16
23
  var _this = this;
@@ -33,57 +40,36 @@ var RenderJS = /** @class */ (function () {
33
40
  });
34
41
  }
35
42
  };
36
- RenderJS.prototype.addRouter = function (router) {
37
- this.routerC = router;
38
- };
39
43
  //运行renderJs
40
44
  RenderJS.prototype.run = function () {
41
45
  if (this.routerC) {
42
- if (this.routerC.data.beforeRouter()) {
43
- if (typeof this.routerC.getRule(location.href) === "boolean") {
44
- Reflect.set(window, "tagLib", this.tagLib);
45
- renderHtml(document.body.children, this.tagLib);
46
+ this.routerC.data.beforeRouter();
47
+ if (typeof this.routerC.getRule(location.href) === "boolean") {
48
+ this.render();
49
+ }
50
+ else {
51
+ if (this.routerC.getRule(location.href).beforeRouter()) {
52
+ this.render();
46
53
  }
47
54
  else {
48
- if (this.routerC.getRule(location.href).beforeRouter()) {
49
- Reflect.set(window, "tagLib", this.tagLib);
50
- renderHtml(document.body.children, this.tagLib);
51
- }
52
- else {
53
- location.href = "/http/error/404.html";
54
- }
55
+ redirect("/http/400.html");
55
56
  }
56
57
  }
57
- else {
58
- location.href = "/http/error/404.html";
59
- }
58
+ this.routerC.data.afterRouter();
60
59
  }
61
60
  else {
62
- Reflect.set(window, "tagLib", this.tagLib);
63
- renderHtml(document.body.children, this.tagLib);
61
+ this.render();
64
62
  }
65
63
  };
66
- return RenderJS;
67
- }());
68
- export { RenderJS };
69
- //嵌入式RenderJs
70
- var EmbedRenderJs = /** @class */ (function () {
71
- //构造函数
72
- function EmbedRenderJs(config) {
73
- this.apiComponent = new ApiComponent(config);
74
- }
75
- //渲染嵌入式app
76
- EmbedRenderJs.prototype.render = function (selector) {
77
- this.controller = apiRender(this.apiComponent, document.getElementById(selector), this.apiComponent.getName(), Reflect.get(window, "tagLib"), new ApiController());
78
- };
79
- //与嵌入式app交互
80
- EmbedRenderJs.prototype.commit = function (method) {
81
- var args = [];
82
- for (var _i = 1; _i < arguments.length; _i++) {
83
- args[_i - 1] = arguments[_i];
64
+ RenderJS.prototype.render = function () {
65
+ Reflect.set(window, "tagLib", this.tagLib);
66
+ var styleLib = new Map();
67
+ for (var tagLibKey in this.tagLib) {
68
+ themeStyle(tagLibKey[tagLibKey], styleLib);
84
69
  }
85
- return this.controller[method](args);
70
+ Reflect.set(window, "styleLib", styleLib);
71
+ renderHtml(document.body.children, this.page);
86
72
  };
87
- return EmbedRenderJs;
73
+ return RenderJS;
88
74
  }());
89
- export { EmbedRenderJs };
75
+ export { RenderJS };
@@ -0,0 +1,6 @@
1
+ import { Component } from "../../class/component";
2
+ import { Controller } from "../../class/controller";
3
+ import { ApiController } from "../../class/apiController";
4
+ import ApiComponent from "../../class/apiComponent";
5
+ export declare function cmd(tagTemplate: Element, proto: Component | ApiComponent, controller: Controller | ApiController): void;
6
+ export declare function cmdForUpdate(tagTemplate: Element, proto: Component, controller: Controller | ApiController): void;
@@ -0,0 +1,32 @@
1
+ import { addLabel } from "../../core/utility/miscUtility";
2
+ import { resolver_event } from "../../core/cmd/v-on";
3
+ import { resolver_html } from "../../core/cmd/v-html";
4
+ import { resolver_txt } from "../../core/cmd/v-txt";
5
+ import { resolver_model } from "../../core/cmd/v-model";
6
+ import { resolver_bind } from "../../core/cmd/v-bind";
7
+ export function cmd(tagTemplate, proto, controller) {
8
+ //给所有元素添加上npm=tag标志
9
+ addLabel(tagTemplate.children, proto.getName());
10
+ //将元素事件绑定到元素上
11
+ resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
12
+ //渲染html
13
+ resolver_html(tagTemplate.children, controller.proxyForMethods);
14
+ //渲染text
15
+ resolver_txt(tagTemplate.children, controller.proxyForMethods);
16
+ //绑定数据
17
+ resolver_model(tagTemplate.children, controller.proxyForMethods);
18
+ //渲染属性
19
+ resolver_bind(tagTemplate.children, controller.proxyForMethods);
20
+ }
21
+ export function cmdForUpdate(tagTemplate, proto, controller) {
22
+ //给所有元素添加上npm=tag标志
23
+ addLabel(tagTemplate.children, proto.getName());
24
+ //将元素事件绑定到元素上
25
+ resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
26
+ //渲染html
27
+ resolver_html(tagTemplate.children, controller.proxyForMethods);
28
+ //渲染text
29
+ resolver_txt(tagTemplate.children, controller.proxyForMethods);
30
+ //绑定数据
31
+ resolver_model(tagTemplate.children, controller.proxyForMethods);
32
+ }
@@ -0,0 +1,2 @@
1
+ import { Controller } from "../../class/controller";
2
+ export declare function inject(controller: Controller, tagTemplate: Element): void;
@@ -0,0 +1,12 @@
1
+ import { getCodeSpaceForProps, getCodeSpaceForQuery, getCodeSpaceForRef, } from "../../core/utility/injectUtility";
2
+ import { resolveProps } from "../../core/resolver/props";
3
+ import { resolve_Queries } from "../../core/resolver/query";
4
+ import { resolver_Ref } from "../../core/cmd/v-ref";
5
+ export function inject(controller, tagTemplate) {
6
+ //注入props
7
+ getCodeSpaceForProps(controller.raw_data, resolveProps(tagTemplate, controller.proto.getProps()));
8
+ //注入query
9
+ getCodeSpaceForQuery(controller.raw_data, resolve_Queries());
10
+ //注入ref
11
+ getCodeSpaceForRef(controller.raw_data, resolver_Ref(tagTemplate.children));
12
+ }
@@ -1 +1 @@
1
- export declare function loadStyle(data: string, tag: string): void;
1
+ export declare function loadStyle(tag: string, theme: string, styleData: string): void;
@@ -1,10 +1,11 @@
1
1
  import { checkStyleLabel } from "../../core/utility/styleUtility";
2
- export function loadStyle(data, tag) {
2
+ export function loadStyle(tag, theme, styleData) {
3
3
  if (!checkStyleLabel(tag)) {
4
4
  var style = document.createElement('style');
5
- var text = document.createTextNode(data);
5
+ var text = document.createTextNode(styleData);
6
6
  style.appendChild(text);
7
7
  style.setAttribute("tag", tag.toUpperCase());
8
+ style.setAttribute("theme", theme);
8
9
  var head = document.getElementsByTagName('head')[0];
9
10
  head.appendChild(style);
10
11
  }
@@ -0,0 +1,7 @@
1
+ import { Controller } from "../../class/controller";
2
+ import { Component } from "../../class/component";
3
+ import { ApiController } from "../../class/apiController";
4
+ import { PageController } from "../../class/pageController";
5
+ export declare function init_render(proto: Component, parent: ParentNode, child: Element, link: Controller | ApiController | PageController, tagTemplate: Element): void;
6
+ export declare function post_render(proto: Component, parent: ParentNode, child: Element, link: Controller | ApiController | PageController, tagTemplate: Element): void;
7
+ export declare function raw_render(proto: Component, parent: ParentNode, child: Element, link: Controller | ApiController | PageController, tagTemplate: Element): void;
@@ -0,0 +1,118 @@
1
+ import { Controller } from "../../class/controller";
2
+ import { getCodeSpaceForCommit, getCodeSpaceForPublish, getCommitMethod, getPublishMethod } from "../../core/utility/injectUtility";
3
+ import { getProxyObject } from "../../core/proxy/getProxy";
4
+ import { findComponent } from "../../core/render/initRender";
5
+ import { inject } from "../inject/inject";
6
+ import { cmd } from "../cmd/cmd";
7
+ export function init_render(proto, parent, child, link, tagTemplate) {
8
+ //获取控制对象
9
+ var controller = new Controller();
10
+ //保持控制器模板对象
11
+ controller.proto = proto;
12
+ //复制原始数据对象到控制对象
13
+ controller.raw_data = link.link.get(child.getAttribute("name"));
14
+ //向raw_data中注入元数据
15
+ inject(controller, tagTemplate);
16
+ //数据渲染代理对象
17
+ controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
18
+ //注入commit
19
+ getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
20
+ //注入receiver
21
+ getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
22
+ //beforeRender
23
+ var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
24
+ beforeRender();
25
+ //解析指令
26
+ cmd(tagTemplate, proto, controller);
27
+ //beforeMount
28
+ var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
29
+ beforeMount();
30
+ //mount
31
+ var renderSpace = document.createElement("div");
32
+ parent.replaceChild(renderSpace, child);
33
+ while (tagTemplate.hasChildNodes()) {
34
+ renderSpace.append(tagTemplate.firstChild);
35
+ }
36
+ //afterRender
37
+ var afterRender = proto.getAfterRender().bind(controller.raw_data);
38
+ afterRender();
39
+ //指定渲染空间
40
+ controller.root = renderSpace;
41
+ link.to.push(controller);
42
+ //深度渲染
43
+ findComponent(tagTemplate.children, controller);
44
+ }
45
+ export function post_render(proto, parent, child, link, tagTemplate) {
46
+ //获取控制对象
47
+ var controller = new Controller();
48
+ //保持控制器模板对象
49
+ controller.proto = proto;
50
+ //复制原始数据对象到控制对象
51
+ controller.raw_data = Object.create(proto.getData());
52
+ //向raw_data中注入元数据
53
+ inject(controller, tagTemplate);
54
+ //保持数据代理对象
55
+ controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
56
+ //注入commit
57
+ getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
58
+ //注入receiver
59
+ getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
60
+ //beforeRender
61
+ var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
62
+ beforeRender();
63
+ //解析指令
64
+ cmd(tagTemplate, proto, controller);
65
+ //beforeMount
66
+ var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
67
+ beforeMount();
68
+ //mount
69
+ var renderSpace = document.createElement("div");
70
+ controller.root = renderSpace;
71
+ parent.replaceChild(renderSpace, child);
72
+ while (tagTemplate.hasChildNodes()) {
73
+ renderSpace.append(tagTemplate.firstChild);
74
+ }
75
+ //afterRender
76
+ var afterRender = proto.getAfterRender().bind(controller.raw_data);
77
+ afterRender();
78
+ link.to.push(controller);
79
+ //深度渲染
80
+ findComponent(controller.root.children, controller);
81
+ }
82
+ export function raw_render(proto, parent, child, link, tagTemplate) {
83
+ //获取控制对象
84
+ var controller = new Controller();
85
+ //保持控制对象原型对象
86
+ controller.proto = proto;
87
+ //向raw_data中注入元数据
88
+ inject(controller, tagTemplate);
89
+ //复制原始数据对象到控制对象
90
+ controller.raw_data = Object.create(proto.getData());
91
+ //数据渲染对象
92
+ controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
93
+ //注入commit
94
+ getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
95
+ //注入receiver
96
+ getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
97
+ //beforeRender
98
+ var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
99
+ beforeRender();
100
+ //解析指令
101
+ cmd(tagTemplate, proto, controller);
102
+ //beforeMount
103
+ var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
104
+ beforeMount();
105
+ //mount
106
+ var renderSpace = document.createElement("div");
107
+ controller.root = renderSpace;
108
+ parent.replaceChild(renderSpace, child);
109
+ while (tagTemplate.hasChildNodes()) {
110
+ renderSpace.append(tagTemplate.firstChild);
111
+ }
112
+ //afterRender
113
+ var afterRender = proto.getAfterRender().bind(controller.raw_data);
114
+ afterRender();
115
+ link.to.push(controller);
116
+ //深度渲染
117
+ findComponent(controller.root.children, controller);
118
+ }
@@ -0,0 +1 @@
1
+ export declare function styleResolve(tag: string): void;
@@ -0,0 +1,12 @@
1
+ // @ts-ignore
2
+ import { sessionStorageEngin_read } from "render-status/read/read";
3
+ import { loadStyle } from "../loader/loader";
4
+ export function styleResolve(tag) {
5
+ var theme = sessionStorageEngin_read("theme");
6
+ if (Reflect.get(window, "styleLib").get(tag).get(theme) === undefined) {
7
+ console.log("tag:" + tag + "has no them" + theme);
8
+ }
9
+ else {
10
+ loadStyle(tag, theme, Reflect.get(window, "styleLib").get(tag).get(theme));
11
+ }
12
+ }
@@ -0,0 +1,3 @@
1
+ import { Component } from "../../class/component";
2
+ import ApiComponent from "../../class/apiComponent";
3
+ export declare function getTemplate(proto: Component | ApiComponent): Element;
@@ -0,0 +1,9 @@
1
+ export function getTemplate(proto) {
2
+ //生成DOM
3
+ var temp = document.createElement("div");
4
+ temp.innerHTML = proto.getTemplate();
5
+ var template = temp.getElementsByTagName("template")[0];
6
+ var content = template.content;
7
+ //获得模板元素
8
+ return content.firstElementChild;
9
+ }
package/meta/meta.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  declare const _default: {
2
2
  version: string;
3
+ style: string;
3
4
  };
4
5
  export default _default;
package/meta/meta.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export default {
2
2
  version: "2.0.0",
3
+ style: "default"
3
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "render-core",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "The router for render-js",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -12,5 +12,9 @@
12
12
  "url": "https://github.com//render-js/render.git"
13
13
  },
14
14
  "author": "mutian",
15
- "license": "MIT"
15
+ "license": "MIT",
16
+ "dependencies": {
17
+ "render-security": "^1.0.4",
18
+ "render-status": "^1.0.0"
19
+ }
16
20
  }
@@ -1,2 +1,2 @@
1
- import { Component } from "../class/component";
2
- export declare function renderHtml(collection: HTMLCollection, tagLib: Map<string, Component>): void;
1
+ import { PageController } from "../class/pageController";
2
+ export declare function renderHtml(collection: HTMLCollection, link: PageController): void;
@@ -1,16 +1,16 @@
1
1
  import { isUnKnown } from "../core/utility/checkUtility";
2
- import { resolver } from "../core/utility/miscUtility";
2
+ import { Render } from "../core/render/initRender";
3
3
  //检查元素是否为基元素
4
- export function renderHtml(collection, tagLib) {
4
+ export function renderHtml(collection, link) {
5
5
  //遍历element节点,判断是否为自定义标签
6
6
  for (var i = 0; i < collection.length; i++) {
7
7
  if (isUnKnown(collection[i].nodeName.toUpperCase())) {
8
8
  //自定义标签
9
- resolver(collection[i], tagLib);
9
+ Render(Reflect.get(window, "tagLib").get(collection[i].nodeName.toUpperCase()), collection[i].parentNode, collection[i], link);
10
10
  }
11
11
  else {
12
12
  //非自定义标签,深度解析
13
- renderHtml(collection[i].children, tagLib);
13
+ renderHtml(collection[i].children, link);
14
14
  }
15
15
  }
16
16
  }
@@ -1,4 +0,0 @@
1
- import { Component } from "../../class/component";
2
- import ApiComponent from "../../class/apiComponent";
3
- import { ApiController } from "../../class/apiController";
4
- export declare function apiRender(proto: ApiComponent, parent: ParentNode, attr: string, tagLib: Map<string, Component>, link: ApiController): any;
@@ -1,60 +0,0 @@
1
- import { loadStyle } from "../../library/loader/loader";
2
- import { addLabel } from "../utility/miscUtility";
3
- import { getProxyObjectForApi } from "../proxy/getProxy";
4
- import { ApiController } from "../../class/apiController";
5
- import { getApiCodeSpace, getCodeSpaceForRef } from "../utility/injectUtility";
6
- import { findComponent } from "./initRender";
7
- import { resolver_Ref } from "../cmd/v-ref";
8
- import { resolver_html } from "../cmd/v-html";
9
- import { resolver_txt } from "../cmd/v-txt";
10
- import { resolver_model } from "../cmd/v-model";
11
- import { resolver_bind } from "../cmd/v-bind";
12
- import { resolver_event } from "../cmd/v-on";
13
- //渲染自定义标签
14
- export function apiRender(proto, parent, attr, tagLib, link) {
15
- //获取控制对象
16
- var apiController = new ApiController();
17
- apiController.proto = proto;
18
- //复制原始数据对象到控制对象
19
- apiController.raw_data = Object.create(proto.getData());
20
- //数据渲染对象
21
- apiController.proxyForMethods = getProxyObjectForApi(apiController.raw_data, apiController);
22
- //beforeRender
23
- var beforeRender = proto.getBeforeRender().bind(apiController.raw_data);
24
- beforeRender();
25
- //Render
26
- var temp = document.createElement("div");
27
- temp.innerHTML = proto.getTemplate();
28
- var template = temp.getElementsByTagName("template")[0];
29
- var content = template.content;
30
- //获取到模板
31
- var tagTemplate = content.firstElementChild;
32
- addLabel(tagTemplate.children, proto.getName());
33
- resolver_event(tagTemplate.children, proto.getMethods(), apiController.proxyForMethods);
34
- resolver_html(tagTemplate.children, apiController.proxyForMethods);
35
- resolver_txt(tagTemplate.children, apiController.proxyForMethods);
36
- resolver_model(tagTemplate.children, apiController.proxyForMethods);
37
- resolver_bind(tagTemplate.children, apiController.proxyForMethods);
38
- //获取到模板样式
39
- var tagStyle = content.lastElementChild;
40
- loadStyle(tagStyle.childNodes[0].nodeValue, proto.getName());
41
- //注入ref
42
- getCodeSpaceForRef(apiController.raw_data, resolver_Ref(tagTemplate.children));
43
- //mount
44
- while (parent.hasChildNodes()) {
45
- parent.removeChild(parent.firstChild);
46
- }
47
- while (tagTemplate.hasChildNodes()) {
48
- parent.append(tagTemplate.firstChild);
49
- }
50
- //afterRender
51
- var afterRender = proto.getAfterRender().bind(apiController.raw_data);
52
- afterRender();
53
- //切换根组件
54
- apiController.root = parent;
55
- //深度渲染
56
- findComponent(tagTemplate.children, tagLib, link);
57
- //返回api对象
58
- getApiCodeSpace(apiController.raw_data, proto.getMethods());
59
- return apiController.raw_data;
60
- }
@@ -1,5 +0,0 @@
1
- import { Controller } from "../../class/controller";
2
- import { Component } from "../../class/component";
3
- import { ApiController } from "../../class/apiController";
4
- export declare function depthRender(proto: Component, parent: ParentNode, child: Element, tagLib: Map<string, Component>, link: Controller | ApiController): void;
5
- export declare function depthFindComponent(collection: HTMLCollection, tagLib: Map<string, Component>, link: Controller | ApiController): void;
@@ -1,198 +0,0 @@
1
- import { loadStyle } from "../../library/loader/loader";
2
- import { addLabel } from "../utility/miscUtility";
3
- import { getProxyForInject, getProxyObject } from "../proxy/getProxy";
4
- import { Controller } from "../../class/controller";
5
- import { getCodeSpaceForCommit, getCodeSpaceForProps, getCodeSpaceForPublish, getCodeSpaceForQuery, getCodeSpaceForRef, getCommitMethod, getPublishMethod, } from "../utility/injectUtility";
6
- import { resolveProps } from "../resolver/props";
7
- import { resolve_Queries, } from "../resolver/query";
8
- import { resolver_event } from "../cmd/v-on";
9
- import { resolver_html } from "../cmd/v-html";
10
- import { resolver_txt } from "../cmd/v-txt";
11
- import { resolver_model } from "../cmd/v-model";
12
- import { resolver_Ref } from "../cmd/v-ref";
13
- import { isUnKnown } from "../utility/checkUtility";
14
- import { resolver_bind } from "../cmd/v-bind";
15
- //渲染自定义标签
16
- export function depthRender(proto, parent, child, tagLib, link) {
17
- //生成DOM
18
- var temp = document.createElement("div");
19
- temp.innerHTML = proto.getTemplate();
20
- var template = temp.getElementsByTagName("template")[0];
21
- var content = template.content;
22
- //获得模板元素
23
- var tagTemplate = content.firstElementChild;
24
- //解析元素上的静态属性
25
- var props = resolveProps(tagTemplate, proto);
26
- //获得模板样式元素
27
- var tagStyle = content.lastElementChild;
28
- //向head位置添加该组件的样式
29
- loadStyle(tagStyle.childNodes[0].nodeValue, proto.getName());
30
- //两种渲染方式
31
- if (child.hasAttribute("name")) {
32
- if (link.link.has(child.getAttribute("name"))) {
33
- //获取控制对象
34
- var controller = new Controller();
35
- controller.proto = proto;
36
- //复制原始数据对象到控制对象
37
- controller.raw_data = link.link.get(child.getAttribute("name"));
38
- //注入props
39
- getCodeSpaceForProps(controller.raw_data, resolveProps(tagTemplate.firstElementChild, controller.proto.getProps()));
40
- //注入query
41
- getCodeSpaceForQuery(controller.raw_data, resolve_Queries());
42
- //注入ref
43
- getCodeSpaceForRef(controller.raw_data, resolver_Ref(tagTemplate.children));
44
- //数据渲染对象
45
- controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
46
- //注入commit
47
- getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
48
- //注入receiver
49
- getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
50
- //beforeRender
51
- var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
52
- beforeRender();
53
- //给所有元素添加上npm=tag标志
54
- addLabel(tagTemplate.children, proto.getName());
55
- //将元素事件绑定到元素上
56
- resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
57
- //渲染html
58
- resolver_html(tagTemplate.children, controller.proxyForMethods);
59
- //渲染text
60
- resolver_txt(tagTemplate.children, controller.proxyForMethods);
61
- //绑定数据
62
- resolver_model(tagTemplate.children, controller.proxyForMethods);
63
- //渲染属性
64
- resolver_bind(tagTemplate.children, controller.proxyForMethods);
65
- //beforeMount
66
- var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
67
- beforeMount();
68
- //mount
69
- var renderSpace = document.createElement("div");
70
- parent.replaceChild(renderSpace, child);
71
- while (tagTemplate.hasChildNodes()) {
72
- renderSpace.append(tagTemplate.firstChild);
73
- }
74
- //afterRender
75
- var afterRender = proto.getAfterRender().bind(controller.raw_data);
76
- afterRender();
77
- //指定渲染空间
78
- controller.root = renderSpace;
79
- link.to.push(controller);
80
- //深度渲染
81
- depthFindComponent(tagTemplate.children, tagLib, controller);
82
- }
83
- else {
84
- //获取控制对象
85
- var controller = new Controller();
86
- controller.proto = proto;
87
- controller.preRender = true;
88
- //复制原始数据对象到控制对象
89
- controller.raw_data = Object.create(proto.getData());
90
- //注入props
91
- getCodeSpaceForProps(controller.raw_data, resolveProps(tagTemplate.firstElementChild, controller.proto.getProps()));
92
- //注入query
93
- getCodeSpaceForQuery(controller.raw_data, resolve_Queries());
94
- //注入ref
95
- getCodeSpaceForRef(controller.raw_data, resolver_Ref(tagTemplate.children));
96
- //数据渲染对象
97
- controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
98
- getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
99
- //注入receiver
100
- getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
101
- //beforeRender
102
- var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
103
- beforeRender();
104
- //给所有元素添加上npm=tag标志
105
- addLabel(tagTemplate.children, proto.getName());
106
- //将元素事件绑定到元素上
107
- resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
108
- //渲染html
109
- resolver_html(tagTemplate.children, controller.proxyForMethods);
110
- //渲染text
111
- resolver_txt(tagTemplate.children, controller.proxyForMethods);
112
- //绑定数据
113
- resolver_model(tagTemplate.children, controller.proxyForMethods);
114
- //渲染属性
115
- resolver_bind(tagTemplate.children, controller.proxyForMethods);
116
- //beforeMount
117
- var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
118
- beforeMount();
119
- //mount
120
- var renderSpace = document.createElement("div");
121
- controller.root = renderSpace;
122
- parent.replaceChild(renderSpace, child);
123
- while (tagTemplate.hasChildNodes()) {
124
- renderSpace.append(tagTemplate.firstChild);
125
- }
126
- //afterRender
127
- var afterRender = proto.getAfterRender().bind(controller.raw_data);
128
- afterRender();
129
- if (controller.preRender) {
130
- link.link.set(child.getAttribute("name"), controller.raw_data);
131
- }
132
- link.to.push(controller);
133
- //深度渲染
134
- depthFindComponent(controller.root.children, tagLib, controller);
135
- }
136
- }
137
- else {
138
- //获取控制对象
139
- var controller = new Controller();
140
- controller.proto = proto;
141
- //复制原始数据对象到控制对象
142
- controller.raw_data = Object.create(proto.getData());
143
- //数据渲染对象
144
- controller.proxyForMethods = getProxyObject(controller.raw_data, controller);
145
- //注入commit
146
- getCodeSpaceForCommit(controller.raw_data, getCommitMethod(link));
147
- //注入receiver
148
- getCodeSpaceForPublish(controller.raw_data, getPublishMethod(controller));
149
- //beforeRender
150
- var beforeRender = proto.getBeforeRender().bind(controller.raw_data);
151
- beforeRender();
152
- //注入props
153
- getCodeSpaceForProps(controller.raw_data, getProxyForInject(props));
154
- //注入query
155
- getCodeSpaceForQuery(controller.raw_data, resolve_Queries());
156
- //注入ref
157
- getCodeSpaceForRef(controller.raw_data, resolver_Ref(tagTemplate.children));
158
- //给所有元素添加上npm=tag标志
159
- addLabel(tagTemplate.children, proto.getName());
160
- //将元素事件绑定到元素上
161
- resolver_event(tagTemplate.children, proto.getMethods(), controller.proxyForMethods);
162
- //渲染html
163
- resolver_html(tagTemplate.children, controller.proxyForMethods);
164
- //渲染text
165
- resolver_txt(tagTemplate.children, controller.proxyForMethods);
166
- //绑定数据
167
- resolver_model(tagTemplate.children, controller.proxyForMethods);
168
- //渲染属性
169
- resolver_bind(tagTemplate.children, controller.proxyForMethods);
170
- //beforeMount
171
- var beforeMount = proto.getBeforeMount().bind(controller.raw_data);
172
- beforeMount();
173
- //mount
174
- var renderSpace = document.createElement("div");
175
- controller.root = renderSpace;
176
- parent.replaceChild(renderSpace, child);
177
- while (tagTemplate.hasChildNodes()) {
178
- renderSpace.append(tagTemplate.firstChild);
179
- }
180
- //afterRender
181
- var afterRender = proto.getAfterRender().bind(controller.raw_data);
182
- afterRender();
183
- link.to.push(controller);
184
- //深度渲染
185
- depthFindComponent(controller.root.children, tagLib, controller);
186
- }
187
- }
188
- //继续渲染
189
- export function depthFindComponent(collection, tagLib, link) {
190
- for (var i = 0; i < collection.length; i++) {
191
- if (isUnKnown(collection[i].nodeName)) {
192
- depthRender(tagLib.get(collection[i].nodeName.toUpperCase()), collection[i].parentNode, collection[i], tagLib, link);
193
- }
194
- else {
195
- depthFindComponent(collection[i].children, tagLib, link);
196
- }
197
- }
198
- }