render-core 1.0.0

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.
Files changed (69) hide show
  1. package/class/apiComponent.d.ts +55 -0
  2. package/class/apiComponent.js +111 -0
  3. package/class/apiController.d.ts +13 -0
  4. package/class/apiController.js +16 -0
  5. package/class/component.d.ts +63 -0
  6. package/class/component.js +131 -0
  7. package/class/controller.d.ts +12 -0
  8. package/class/controller.js +18 -0
  9. package/core/cmd/v-bind.d.ts +1 -0
  10. package/core/cmd/v-bind.js +25 -0
  11. package/core/cmd/v-el.d.ts +0 -0
  12. package/core/cmd/v-el.js +0 -0
  13. package/core/cmd/v-for.d.ts +0 -0
  14. package/core/cmd/v-for.js +0 -0
  15. package/core/cmd/v-html.d.ts +1 -0
  16. package/core/cmd/v-html.js +13 -0
  17. package/core/cmd/v-if.d.ts +0 -0
  18. package/core/cmd/v-if.js +0 -0
  19. package/core/cmd/v-model.d.ts +1 -0
  20. package/core/cmd/v-model.js +34 -0
  21. package/core/cmd/v-on.d.ts +1 -0
  22. package/core/cmd/v-on.js +25 -0
  23. package/core/cmd/v-ref.d.ts +1 -0
  24. package/core/cmd/v-ref.js +10 -0
  25. package/core/cmd/v-render.d.ts +1 -0
  26. package/core/cmd/v-render.js +21 -0
  27. package/core/cmd/v-show.d.ts +1 -0
  28. package/core/cmd/v-show.js +21 -0
  29. package/core/cmd/v-txt.d.ts +1 -0
  30. package/core/cmd/v-txt.js +13 -0
  31. package/core/proxy/getProxy.d.ts +5 -0
  32. package/core/proxy/getProxy.js +19 -0
  33. package/core/render/apiRender.d.ts +4 -0
  34. package/core/render/apiRender.js +60 -0
  35. package/core/render/depthRender.d.ts +5 -0
  36. package/core/render/depthRender.js +198 -0
  37. package/core/render/initRender.d.ts +5 -0
  38. package/core/render/initRender.js +87 -0
  39. package/core/render/updateRender.d.ts +2 -0
  40. package/core/render/updateRender.js +50 -0
  41. package/core/resolver/props.d.ts +1 -0
  42. package/core/resolver/props.js +14 -0
  43. package/core/resolver/query.d.ts +1 -0
  44. package/core/resolver/query.js +13 -0
  45. package/core/utility/checkUtility.d.ts +1 -0
  46. package/core/utility/checkUtility.js +4 -0
  47. package/core/utility/injectUtility.d.ts +10 -0
  48. package/core/utility/injectUtility.js +47 -0
  49. package/core/utility/miscUtility.d.ts +4 -0
  50. package/core/utility/miscUtility.js +55 -0
  51. package/core/utility/styleUtility.d.ts +1 -0
  52. package/core/utility/styleUtility.js +12 -0
  53. package/index.d.ts +28 -0
  54. package/index.js +64 -0
  55. package/library/getter/getter.d.ts +1 -0
  56. package/library/getter/getter.js +6 -0
  57. package/library/loader/loader.d.ts +1 -0
  58. package/library/loader/loader.js +11 -0
  59. package/library/setter/setter.d.ts +5 -0
  60. package/library/setter/setter.js +23 -0
  61. package/library/tag/extend.d.ts +14 -0
  62. package/library/tag/extend.js +4 -0
  63. package/meta/meta.d.ts +4 -0
  64. package/meta/meta.js +3 -0
  65. package/package.json +16 -0
  66. package/runtime/database/metaTagLib.d.ts +2 -0
  67. package/runtime/database/metaTagLib.js +27 -0
  68. package/runtime/runtime.d.ts +2 -0
  69. package/runtime/runtime.js +16 -0
@@ -0,0 +1,60 @@
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
+ }
@@ -0,0 +1,5 @@
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;
@@ -0,0 +1,198 @@
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
+ }
@@ -0,0 +1,5 @@
1
+ import { Controller } from "../../class/controller";
2
+ import { Component } from "../../class/component";
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;
@@ -0,0 +1,87 @@
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
+ import { isUnKnown } from "../utility/checkUtility";
14
+ import { resolver_bind } from "../cmd/v-bind";
15
+ import { depthRender } from "./depthRender";
16
+ //渲染自定义标签
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;
23
+ //获得模板元素
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);
70
+ }
71
+ //afterRender
72
+ var afterRender = proto.getAfterRender().bind(controller.raw_data);
73
+ afterRender();
74
+ //深度渲染
75
+ findComponent(controller.root.children, tagLib, controller);
76
+ }
77
+ //继续渲染
78
+ export function findComponent(collection, tagLib, link) {
79
+ for (var i = 0; i < collection.length; i++) {
80
+ if (isUnKnown(collection[i].nodeName)) {
81
+ depthRender(tagLib.get(collection[i].nodeName.toUpperCase()), collection[i].parentNode, collection[i], tagLib, link);
82
+ }
83
+ else {
84
+ findComponent(collection[i].children, tagLib, link);
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,2 @@
1
+ import { Controller } from "../../class/controller";
2
+ export declare function updateRender(updater: Controller): void;
@@ -0,0 +1,50 @@
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) {
8
+ //生成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;
14
+ //beforeRender
15
+ var beforeRender = updater.proto.getBeforeRender().bind(updateRawData);
16
+ beforeRender();
17
+ //beforeUpdate
18
+ var beforeUpdate = updater.proto.getBeforeUpdate().bind(updateRawData);
19
+ 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);
26
+ //afterUpdate
27
+ var afterUpdate = updater.proto.getAfterUpdate().bind(updateRawData);
28
+ afterUpdate();
29
+ //beforeUnmount
30
+ var beforeUnmount = updater.proto.getBeforeUnmount().bind(updateRawData);
31
+ beforeUnmount();
32
+ //unmount
33
+ while (updater.root.hasChildNodes()) {
34
+ updater.root.removeChild(updater.root.firstChild);
35
+ }
36
+ //beforeMount
37
+ var beforeMount = updater.proto.getBeforeMount().bind(updateRawData);
38
+ beforeMount();
39
+ //mount
40
+ while (tagTemplate.hasChildNodes()) {
41
+ updater.root.appendChild(tagTemplate.firstChild);
42
+ }
43
+ //afterRender
44
+ var afterRender = updater.proto.getAfterRender().bind(updateRawData);
45
+ afterRender();
46
+ //获取定位
47
+ bindModelForUpdater(updater.root.children, updater.proxyForMethods);
48
+ //深度渲染
49
+ depthFindComponent(updater.root.children, Reflect.get(window, "tagLib"), updater);
50
+ }
@@ -0,0 +1 @@
1
+ export declare function resolveProps(node: Element, properties: {} | []): any;
@@ -0,0 +1,14 @@
1
+ import { getProxyForInject } from "../proxy/getProxy";
2
+ export function resolveProps(node, properties) {
3
+ if (properties instanceof Array) {
4
+ }
5
+ if (properties instanceof Object) {
6
+ }
7
+ var attrs = node.attributes;
8
+ var props = new Map();
9
+ // for (let key in Object.getOwnPropertyNames(properties)) {
10
+ //
11
+ // props[key] = attrs.getNamedItem(key).value;
12
+ // }
13
+ return getProxyForInject(props);
14
+ }
@@ -0,0 +1 @@
1
+ export declare function resolve_Queries(): Map<string, any>;
@@ -0,0 +1,13 @@
1
+ import { getProxyForInject } from "../proxy/getProxy";
2
+ export function resolve_Queries() {
3
+ var query = new Map();
4
+ if (location.search !== undefined) {
5
+ var parameters = location.search.replace("?", "");
6
+ var listPara = parameters.split("&");
7
+ listPara.forEach(function (value) {
8
+ var results = value.split("=");
9
+ Reflect.set(query, results[0], results[1]);
10
+ });
11
+ }
12
+ return getProxyForInject(query);
13
+ }
@@ -0,0 +1 @@
1
+ export declare function isUnKnown(element: string): boolean;
@@ -0,0 +1,4 @@
1
+ import metaTagLib from "../../runtime/database/metaTagLib";
2
+ export function isUnKnown(element) {
3
+ return !metaTagLib.some(function (ele) { return ele == element; });
4
+ }
@@ -0,0 +1,10 @@
1
+ import { Controller } from "../../class/controller";
2
+ import { ApiController } from "../../class/apiController";
3
+ export declare function getCodeSpaceForProps(data: {}, $props: {}): void;
4
+ export declare function getCodeSpaceForQuery(data: {}, $query: {}): void;
5
+ export declare function getCodeSpaceForRef(data: {}, $ref: Map<string, Element>): void;
6
+ export declare function getApiCodeSpace(data: {}, method: {}): void;
7
+ export declare function getCommitMethod(controller: Controller | ApiController): any;
8
+ export declare function getCodeSpaceForCommit(data: {}, commit: any): void;
9
+ export declare function getPublishMethod(controller: Controller | ApiController): any;
10
+ export declare function getCodeSpaceForPublish(data: {}, publisher: any): void;
@@ -0,0 +1,47 @@
1
+ export function getCodeSpaceForProps(data, $props) {
2
+ Reflect.set(data, "$props", $props);
3
+ }
4
+ export function getCodeSpaceForQuery(data, $query) {
5
+ Reflect.set(data, "$query", $query);
6
+ }
7
+ //注入对象
8
+ export function getCodeSpaceForRef(data, $ref) {
9
+ Reflect.set(data, "$refs", $ref);
10
+ }
11
+ //注入对象
12
+ export function getApiCodeSpace(data, method) {
13
+ var list = Object.getOwnPropertyNames(method);
14
+ list.forEach(function (value) {
15
+ Reflect.set(data, value, method[value].bind(data));
16
+ });
17
+ }
18
+ export function getCommitMethod(controller) {
19
+ var commit = function (method) {
20
+ var args = [];
21
+ for (var _i = 1; _i < arguments.length; _i++) {
22
+ args[_i - 1] = arguments[_i];
23
+ }
24
+ this.receiver(method, args);
25
+ };
26
+ return commit.bind(controller);
27
+ }
28
+ //注入对象
29
+ export function getCodeSpaceForCommit(data, commit) {
30
+ Reflect.set(data, "$commit", commit);
31
+ }
32
+ export function getPublishMethod(controller) {
33
+ var publisher = function (method) {
34
+ var args = [];
35
+ for (var _i = 1; _i < arguments.length; _i++) {
36
+ args[_i - 1] = arguments[_i];
37
+ }
38
+ for (var i = 0; i < this.to.length; i++) {
39
+ this.to[i].receiver(method, args);
40
+ }
41
+ };
42
+ return publisher.bind(controller);
43
+ }
44
+ //注入对象
45
+ export function getCodeSpaceForPublish(data, publisher) {
46
+ Reflect.set(data, "$publish", publisher);
47
+ }
@@ -0,0 +1,4 @@
1
+ import { Component } from "../../class/component";
2
+ export declare function addLabel(nodes: HTMLCollection, component: string): void;
3
+ export declare function resolver(element: Element, tagLib: Map<string, Component>): void;
4
+ export declare function bindModelForUpdater(nodes: HTMLCollection, data: {}): void;
@@ -0,0 +1,55 @@
1
+ import { initRender } from "../render/initRender";
2
+ export function addLabel(nodes, component) {
3
+ for (var i = 0; i < nodes.length; i++) {
4
+ nodes[i].setAttribute("cpn", component);
5
+ var kk = nodes[i].children;
6
+ addLabel(kk, component);
7
+ }
8
+ }
9
+ export function resolver(element, tagLib) {
10
+ initRender(tagLib.get(element.nodeName.toUpperCase()), element.parentNode, element, tagLib);
11
+ }
12
+ export function bindModelForUpdater(nodes, data) {
13
+ for (var i = 0; i < nodes.length; i++) {
14
+ var result = nodes[i].hasAttribute("v-model");
15
+ if (result) {
16
+ var dataName = nodes[i].getAttribute("v-model");
17
+ nodes[i].removeAttribute("v-model");
18
+ var tagName = nodes[i].tagName;
19
+ nodes[i].setAttribute("name", dataName);
20
+ // @ts-ignore
21
+ nodes[i].setAttribute("value", data[dataName]);
22
+ if (tagName === "INPUT" || tagName === "SELECT" || tagName === "TEXTAREA") {
23
+ nodes[i].setAttribute("name", dataName);
24
+ // @ts-ignore
25
+ nodes[i].setAttribute("value", data[dataName]);
26
+ //光标定位
27
+ var listener = function (evt) {
28
+ if (!evt.target.hasAttribute("flag")) {
29
+ var element = evt.target;
30
+ var dataName_1 = element.name;
31
+ this[dataName_1] = element.value;
32
+ }
33
+ };
34
+ var compositionstart = function (evt) {
35
+ evt.target.setAttribute("flag", "false");
36
+ };
37
+ var compositionend = function (evt) {
38
+ evt.target.setAttribute("flag", "true");
39
+ var element = evt.target;
40
+ var dataName = element.name;
41
+ this[dataName] = element.value;
42
+ };
43
+ nodes[i].addEventListener("input", listener.bind(data));
44
+ nodes[i].addEventListener("compositionstart", compositionstart);
45
+ nodes[i].addEventListener("compositionend", compositionend.bind(data));
46
+ // @ts-ignore
47
+ nodes[i].focus();
48
+ // @ts-ignore
49
+ nodes[i].setSelectionRange(data[dataName].length, data[dataName].length);
50
+ }
51
+ }
52
+ var subElements = nodes[i].children;
53
+ bindModelForUpdater(subElements, data);
54
+ }
55
+ }
@@ -0,0 +1 @@
1
+ export declare function checkStyleLabel(tag: string): boolean;
@@ -0,0 +1,12 @@
1
+ export function checkStyleLabel(tag) {
2
+ //获取所有的style标签
3
+ var styles = document.getElementsByTagName("style");
4
+ //遍历标签,查看是否已经加载tag样式
5
+ for (var i = 0; i < styles.length; i++) {
6
+ if (styles[i].getAttribute("tag") === tag.toUpperCase())
7
+ //样式已经加载
8
+ return true;
9
+ }
10
+ //样式未加载
11
+ return false;
12
+ }
package/index.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import { Component } from "./class/component";
2
+ export declare class RenderJS {
3
+ readonly version: string;
4
+ readonly tagLib: Map<string, Component>;
5
+ constructor();
6
+ addTag(component: Component | Component[]): void;
7
+ run(): void;
8
+ }
9
+ export declare class EmbedRenderJs {
10
+ private readonly apiComponent;
11
+ private controller;
12
+ constructor(config: {
13
+ name: string;
14
+ template: string;
15
+ data?: {};
16
+ computed?: {};
17
+ methods?: {};
18
+ watcher?: {};
19
+ beforeRender?: () => void;
20
+ afterRender?: () => void;
21
+ beforeUpdate?: () => void;
22
+ afterUpdate?: () => void;
23
+ beforeMount?: () => void;
24
+ beforeUnmount?: () => void;
25
+ });
26
+ render(selector: string): void;
27
+ commit(method: string, ...args: any[]): any;
28
+ }