dom-render 1.0.74 → 1.0.77

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. package/Config.d.ts +38 -36
  2. package/Config.js +2 -2
  3. package/DomRender.d.ts +28 -27
  4. package/DomRender.js +90 -88
  5. package/DomRenderProxy.d.ts +29 -29
  6. package/DomRenderProxy.js +342 -327
  7. package/README.MD +638 -567
  8. package/RawSet.d.ts +140 -118
  9. package/RawSet.js +771 -905
  10. package/components/ComponentSet.d.ts +7 -0
  11. package/components/ComponentSet.js +14 -0
  12. package/dist/bundle.js +3789 -3214
  13. package/events/EventManager.d.ts +48 -47
  14. package/events/EventManager.js +530 -499
  15. package/iterators/Range.d.ts +22 -22
  16. package/iterators/Range.js +65 -65
  17. package/lifecycle/OnBeforeReturnGet.d.ts +3 -3
  18. package/lifecycle/OnBeforeReturnGet.js +2 -2
  19. package/lifecycle/OnBeforeReturnSet.d.ts +3 -3
  20. package/lifecycle/OnBeforeReturnSet.js +2 -2
  21. package/lifecycle/OnCreateRender.d.ts +3 -3
  22. package/lifecycle/OnCreateRender.js +2 -2
  23. package/lifecycle/OnDestroyRender.d.ts +4 -4
  24. package/lifecycle/OnDestroyRender.js +2 -2
  25. package/lifecycle/OnInitRender.d.ts +7 -7
  26. package/lifecycle/OnInitRender.js +2 -2
  27. package/lifecycle/OnProxyDomRender.d.ts +4 -0
  28. package/lifecycle/OnProxyDomRender.js +2 -0
  29. package/managers/RenderManager.d.ts +3 -3
  30. package/managers/RenderManager.js +18 -18
  31. package/messenger/DefaultMessenger.d.ts +3 -0
  32. package/messenger/DefaultMessenger.js +27 -0
  33. package/messenger/Messenger.d.ts +78 -0
  34. package/messenger/Messenger.js +201 -0
  35. package/operators/Appender.d.ts +7 -12
  36. package/operators/Appender.js +32 -39
  37. package/operators/AttrExpresion.d.ts +0 -0
  38. package/operators/AttrExpresion.js +44 -0
  39. package/operators/Dr.d.ts +4 -0
  40. package/operators/Dr.js +62 -0
  41. package/operators/DrAppender.d.ts +4 -0
  42. package/operators/DrAppender.js +65 -0
  43. package/operators/DrFor.d.ts +4 -0
  44. package/operators/DrFor.js +62 -0
  45. package/operators/DrForOf.d.ts +4 -0
  46. package/operators/DrForOf.js +65 -0
  47. package/operators/DrForm.d.ts +4 -0
  48. package/operators/DrForm.js +100 -0
  49. package/operators/DrIf.d.ts +4 -0
  50. package/operators/DrIf.js +72 -0
  51. package/operators/DrInnerHTML.d.ts +4 -0
  52. package/operators/DrInnerHTML.js +60 -0
  53. package/operators/DrInnerText.d.ts +4 -0
  54. package/operators/DrInnerText.js +58 -0
  55. package/operators/DrPre.d.ts +4 -0
  56. package/operators/DrPre.js +30 -0
  57. package/operators/DrRepeat.d.ts +4 -0
  58. package/operators/DrRepeat.js +63 -0
  59. package/operators/DrTargetAttr.d.ts +4 -0
  60. package/operators/DrTargetAttr.js +55 -0
  61. package/operators/DrTargetElement.d.ts +4 -0
  62. package/operators/DrTargetElement.js +65 -0
  63. package/operators/DrThis.d.ts +4 -0
  64. package/operators/DrThis.js +59 -0
  65. package/operators/OperatorRender.d.ts +41 -0
  66. package/operators/OperatorRender.js +21 -0
  67. package/package.json +94 -94
  68. package/routers/HashRouter.d.ts +9 -9
  69. package/routers/HashRouter.js +53 -53
  70. package/routers/PathRouter.d.ts +9 -9
  71. package/routers/PathRouter.js +52 -52
  72. package/routers/Router.d.ts +25 -25
  73. package/routers/Router.js +116 -116
  74. package/types/Types.d.ts +14 -14
  75. package/types/Types.js +36 -36
  76. package/utils/clipboard/ClipBoardUtils.d.ts +6 -6
  77. package/utils/clipboard/ClipBoardUtils.js +25 -25
  78. package/utils/dom/DomUtils.d.ts +13 -13
  79. package/utils/dom/DomUtils.js +47 -47
  80. package/utils/location/LocationUtils.d.ts +16 -16
  81. package/utils/location/LocationUtils.js +57 -57
  82. package/utils/node/NodeUtils.d.ts +10 -10
  83. package/utils/node/NodeUtils.js +27 -27
  84. package/utils/random/RandomUtils.d.ts +7 -7
  85. package/utils/random/RandomUtils.js +47 -47
  86. package/utils/script/ScriptUtils.d.ts +14 -14
  87. package/utils/script/ScriptUtils.js +89 -89
  88. package/utils/storage/StorageUtils.d.ts +9 -9
  89. package/utils/storage/StorageUtils.js +48 -48
  90. package/utils/string/StringUtils.d.ts +5 -5
  91. package/utils/string/StringUtils.js +41 -41
  92. package/utils/valid/ValidUtils.d.ts +10 -10
  93. package/utils/valid/ValidUtils.js +78 -78
  94. package/validators/AllCheckedValidatorArray.d.ts +6 -6
  95. package/validators/AllCheckedValidatorArray.js +32 -32
  96. package/validators/AllUnCheckedValidatorArray.d.ts +6 -6
  97. package/validators/AllUnCheckedValidatorArray.js +32 -32
  98. package/validators/CheckedValidator.d.ts +5 -5
  99. package/validators/CheckedValidator.js +32 -32
  100. package/validators/CountEqualsCheckedValidatorArray.d.ts +7 -7
  101. package/validators/CountEqualsCheckedValidatorArray.js +34 -34
  102. package/validators/CountEqualsUnCheckedValidatorArray.d.ts +7 -7
  103. package/validators/CountEqualsUnCheckedValidatorArray.js +34 -34
  104. package/validators/CountGreaterThanCheckedValidatorArray.d.ts +7 -7
  105. package/validators/CountGreaterThanCheckedValidatorArray.js +34 -34
  106. package/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +7 -7
  107. package/validators/CountGreaterThanEqualsCheckedValidatorArray.js +34 -34
  108. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +7 -7
  109. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +34 -34
  110. package/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +7 -7
  111. package/validators/CountGreaterThanUnCheckedValidatorArray.js +34 -34
  112. package/validators/CountLessThanCheckedValidatorArray.d.ts +7 -7
  113. package/validators/CountLessThanCheckedValidatorArray.js +34 -34
  114. package/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +7 -7
  115. package/validators/CountLessThanEqualsCheckedValidatorArray.js +34 -34
  116. package/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +7 -7
  117. package/validators/CountLessThanEqualsUnCheckedValidatorArray.js +34 -34
  118. package/validators/CountLessThanUnCheckedValidatorArray.d.ts +7 -7
  119. package/validators/CountLessThanUnCheckedValidatorArray.js +34 -34
  120. package/validators/CountUnCheckedValidatorArray.d.ts +7 -7
  121. package/validators/CountUnCheckedValidatorArray.js +34 -34
  122. package/validators/EmptyValidator.d.ts +5 -5
  123. package/validators/EmptyValidator.js +33 -33
  124. package/validators/ExcludeCheckedValidatorArray.d.ts +8 -8
  125. package/validators/ExcludeCheckedValidatorArray.js +41 -41
  126. package/validators/FormValidator.d.ts +7 -7
  127. package/validators/FormValidator.js +37 -37
  128. package/validators/IncludeCheckedValidatorArray.d.ts +8 -8
  129. package/validators/IncludeCheckedValidatorArray.js +41 -41
  130. package/validators/MultipleValidator.d.ts +8 -8
  131. package/validators/MultipleValidator.js +48 -48
  132. package/validators/NonPassValidator.d.ts +5 -5
  133. package/validators/NonPassValidator.js +31 -31
  134. package/validators/NotEmptyValidator.d.ts +5 -5
  135. package/validators/NotEmptyValidator.js +34 -34
  136. package/validators/NotRegExpTestValidator.d.ts +6 -6
  137. package/validators/NotRegExpTestValidator.js +42 -42
  138. package/validators/PassValidator.d.ts +5 -5
  139. package/validators/PassValidator.js +31 -31
  140. package/validators/RegExpTestValidator.d.ts +6 -6
  141. package/validators/RegExpTestValidator.js +43 -43
  142. package/validators/RequiredValidator.d.ts +5 -5
  143. package/validators/RequiredValidator.js +33 -33
  144. package/validators/UnCheckedValidator.d.ts +5 -5
  145. package/validators/UnCheckedValidator.js +32 -32
  146. package/validators/ValidMultipleValidator.d.ts +9 -9
  147. package/validators/ValidMultipleValidator.js +34 -34
  148. package/validators/ValidValidator.d.ts +6 -6
  149. package/validators/ValidValidator.js +33 -33
  150. package/validators/ValidValidatorArray.d.ts +7 -7
  151. package/validators/ValidValidatorArray.js +33 -33
  152. package/validators/Validator.d.ts +57 -57
  153. package/validators/Validator.js +242 -242
  154. package/validators/ValidatorArray.d.ts +17 -17
  155. package/validators/ValidatorArray.js +99 -99
  156. package/validators/ValueEqualsValidator.d.ts +6 -6
  157. package/validators/ValueEqualsValidator.js +33 -33
  158. package/validators/ValueNotEqualsValidator.d.ts +6 -6
  159. package/validators/ValueNotEqualsValidator.js +33 -33
package/DomRenderProxy.js CHANGED
@@ -1,327 +1,342 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DomRenderProxy = void 0;
4
- var RawSet_1 = require("./RawSet");
5
- var EventManager_1 = require("./events/EventManager");
6
- var ScriptUtils_1 = require("./utils/script/ScriptUtils");
7
- var Types_1 = require("./types/Types");
8
- var excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
9
- var DomRenderProxy = /** @class */ (function () {
10
- function DomRenderProxy(_domRender_origin, target, config) {
11
- this._domRender_origin = _domRender_origin;
12
- this.config = config;
13
- this._domRender_ref = new Map();
14
- this._rawSets = new Map();
15
- this._targets = new Set();
16
- if (target) {
17
- this._targets.add(target);
18
- }
19
- }
20
- DomRenderProxy.unFinal = function (obj) {
21
- return Types_1.DomRenderFinalProxy.unFinal(obj);
22
- };
23
- DomRenderProxy.final = function (obj) {
24
- return Types_1.DomRenderFinalProxy.final(obj);
25
- };
26
- DomRenderProxy.isFinal = function (obj) {
27
- return Types_1.DomRenderFinalProxy.isFinal(obj);
28
- };
29
- DomRenderProxy.prototype.run = function (objProxy) {
30
- var _this = this;
31
- this._domRender_proxy = objProxy;
32
- var obj = objProxy._DomRender_origin;
33
- if (obj) {
34
- Object.keys(obj).forEach(function (it) {
35
- var _a, _b;
36
- // console.log('key-------->', it)
37
- var target = obj[it];
38
- if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Types_1.Shield)) {
39
- // console.log('target-------->', it, target);
40
- // console.count('target')
41
- // console.log('target-------->')
42
- var filter = (_b = (_a = _this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(function (it) { return target instanceof it; })) !== null && _b !== void 0 ? _b : [];
43
- if (filter.length === 0) {
44
- var proxyAfter = _this.proxy(objProxy, target, it);
45
- obj[it] = proxyAfter;
46
- }
47
- }
48
- });
49
- }
50
- this._targets.forEach(function (target) {
51
- _this.initRender(target);
52
- });
53
- };
54
- DomRenderProxy.prototype.initRender = function (target) {
55
- var _this = this;
56
- var _a, _b, _c, _d, _e, _f, _g;
57
- var onCreate = (_b = (_a = target).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, 'dr-on-create');
58
- var createParam = undefined;
59
- if (onCreate) {
60
- createParam = ScriptUtils_1.ScriptUtils.evalReturn(onCreate, this._domRender_proxy);
61
- }
62
- (_d = (_c = this._domRender_proxy) === null || _c === void 0 ? void 0 : _c.onCreateRender) === null || _d === void 0 ? void 0 : _d.call(_c, createParam);
63
- var innerHTML = (_e = target.innerHTML) !== null && _e !== void 0 ? _e : '';
64
- this._targets.add(target);
65
- var rawSets = RawSet_1.RawSet.checkPointCreates(target, this.config);
66
- EventManager_1.eventManager.applyEvent(this._domRender_proxy, EventManager_1.eventManager.findAttrElements(target, this.config), this.config);
67
- rawSets.forEach(function (it) {
68
- var variables = it.getUsingTriggerVariables(_this.config);
69
- if (variables.size <= 0) {
70
- _this.addRawSet('', it);
71
- }
72
- else {
73
- variables.forEach(function (sit) {
74
- _this.addRawSet(sit, it);
75
- });
76
- }
77
- });
78
- this.render(this.getRawSets());
79
- var render = { target: target };
80
- var creatorMetaData = {
81
- creator: this._domRender_proxy,
82
- rootCreator: this._domRender_proxy,
83
- innerHTML: innerHTML
84
- };
85
- (_g = (_f = this._domRender_proxy) === null || _f === void 0 ? void 0 : _f.onInitRender) === null || _g === void 0 ? void 0 : _g.call(_f, { render: render, creatorMetaData: creatorMetaData });
86
- };
87
- DomRenderProxy.prototype.getRawSets = function () {
88
- var set = new Set();
89
- this._rawSets.forEach(function (v, k) {
90
- v.forEach(function (it) { return set.add(it); });
91
- });
92
- return Array.from(set);
93
- };
94
- DomRenderProxy.prototype.render = function (raws) {
95
- var _this = this;
96
- if (typeof raws === 'string') {
97
- var iter = this._rawSets.get(raws);
98
- if (iter) {
99
- raws = Array.from(iter);
100
- }
101
- else {
102
- raws = undefined;
103
- }
104
- }
105
- var removeRawSets = [];
106
- (raws !== null && raws !== void 0 ? raws : this.getRawSets()).forEach(function (it) {
107
- var _a;
108
- it.getUsingTriggerVariables(_this.config).forEach(function (path) { return _this.addRawSet(path, it); });
109
- // console.log('------->', it, it.isConnected)
110
- if (it.isConnected) {
111
- if ((_a = it.detect) === null || _a === void 0 ? void 0 : _a.action) {
112
- it.detect.action();
113
- }
114
- else {
115
- var rawSets = it.render(_this._domRender_proxy, _this.config);
116
- if (rawSets && rawSets.length > 0) {
117
- _this.render(rawSets);
118
- }
119
- }
120
- }
121
- else {
122
- removeRawSets.push(it);
123
- // this.removeRawSet(it)
124
- }
125
- });
126
- if (removeRawSets.length > 0) {
127
- this.removeRawSet.apply(this, removeRawSets);
128
- }
129
- };
130
- DomRenderProxy.prototype.root = function (paths, value, lastDoneExecute) {
131
- var _this = this;
132
- if (lastDoneExecute === void 0) { lastDoneExecute = true; }
133
- // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
134
- var fullPaths = [];
135
- if (this._domRender_ref.size > 0) {
136
- this._domRender_ref.forEach(function (it, key) {
137
- if ('_DomRender_isProxy' in key) {
138
- it.forEach(function (sit) {
139
- var _a;
140
- var items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value, lastDoneExecute);
141
- fullPaths.push(items.join(','));
142
- });
143
- }
144
- });
145
- }
146
- else {
147
- var strings = paths.reverse();
148
- var fullPathStr_1 = strings.map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('').slice(1);
149
- if (lastDoneExecute) {
150
- var iterable = this._rawSets.get(fullPathStr_1);
151
- // array check
152
- var front = strings.slice(0, strings.length - 1).map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('');
153
- var last = strings[strings.length - 1];
154
- var data = ScriptUtils_1.ScriptUtils.evalReturn('this' + front, this._domRender_proxy);
155
- if (last === 'length' && Array.isArray(data)) {
156
- var aIterable = this._rawSets.get(front.slice(1));
157
- if (aIterable) {
158
- this.render(Array.from(aIterable));
159
- }
160
- }
161
- else if (iterable) {
162
- this.render(Array.from(iterable));
163
- }
164
- this._targets.forEach(function (it) {
165
- if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
166
- var targets = EventManager_1.eventManager.findAttrElements(it, _this.config);
167
- EventManager_1.eventManager.changeVar(_this._domRender_proxy, targets, "this.".concat(fullPathStr_1), _this.config);
168
- }
169
- });
170
- }
171
- fullPaths.push(fullPathStr_1);
172
- }
173
- return fullPaths;
174
- };
175
- DomRenderProxy.prototype.set = function (target, p, value, receiver) {
176
- var _a, _b, _c;
177
- if (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) {
178
- target[p] = value;
179
- return true;
180
- }
181
- // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);
182
- // if (typeof p === 'string' && '__render' === p) {
183
- // (target as any)[p] = value;
184
- // return true;
185
- // }
186
- // console.log('set--?', p, target, value);
187
- if (typeof p === 'string') {
188
- value = this.proxy(receiver, value, p);
189
- }
190
- target[p] = value;
191
- var fullPath;
192
- if (typeof p === 'string') {
193
- fullPath = this.root([p], value);
194
- }
195
- // console.log('full path:', fullPath);
196
- if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnSets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
197
- (_c = (_b = receiver) === null || _b === void 0 ? void 0 : _b.onBeforeReturnSet) === null || _c === void 0 ? void 0 : _c.call(_b, p, value, fullPath);
198
- }
199
- return true;
200
- };
201
- DomRenderProxy.prototype.get = function (target, p, receiver) {
202
- var _a, _b, _c;
203
- // console.log('get-->', target, p, receiver);
204
- if (p === '_DomRender_origin') {
205
- return this._domRender_origin;
206
- }
207
- else if (p === '_DomRender_ref') {
208
- return this._domRender_ref;
209
- }
210
- else if (p === '_DomRender_proxy') {
211
- return this;
212
- }
213
- else {
214
- // Date라던지 이런놈들은-_-프록시가 이상하게 동작해서
215
- // console.log('--->', p, target, target.bind, 'bind' in target)
216
- // if ((p in target) && ('bind' in target)) {
217
- // try{
218
- // return (target as any)[p].bind(target);
219
- // }catch (e) {
220
- // console.error(e)
221
- // }
222
- // } else {
223
- // return (target as any)[p]
224
- // }
225
- // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]
226
- // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])
227
- // return (target as any)[p]
228
- var it_1 = target[p];
229
- if (it_1 && typeof it_1 === 'object' && ('_DomRender_isProxy' in it_1) && Object.prototype.toString.call(it_1._DomRender_origin) === '[object Date]') {
230
- it_1 = it_1._DomRender_origin;
231
- }
232
- if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
233
- (_c = (_b = receiver) === null || _b === void 0 ? void 0 : _b.onBeforeReturnGet) === null || _c === void 0 ? void 0 : _c.call(_b, p, it_1, this.root([p], it_1, false));
234
- }
235
- return it_1;
236
- }
237
- };
238
- DomRenderProxy.prototype.has = function (target, p) {
239
- return p === '_DomRender_isProxy' || p in target;
240
- };
241
- DomRenderProxy.prototype.proxy = function (parentProxy, obj, p) {
242
- var _a, _b;
243
- var proxyTarget = ((_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(function (it) { return obj instanceof it; })) !== null && _b !== void 0 ? _b : []).length <= 0;
244
- if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
245
- var domRender = new DomRenderProxy(obj, undefined, this.config);
246
- domRender.addRef(parentProxy, p);
247
- var proxy = new Proxy(obj, domRender);
248
- domRender.run(proxy);
249
- return proxy;
250
- }
251
- if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
252
- var d = obj._DomRender_proxy;
253
- d.addRef(this._domRender_proxy, p);
254
- return obj;
255
- }
256
- else {
257
- return obj;
258
- }
259
- };
260
- DomRenderProxy.prototype.addRef = function (parent, path) {
261
- var _a;
262
- if (!this._domRender_ref.get(parent)) {
263
- this._domRender_ref.set(parent, new Set());
264
- }
265
- (_a = this._domRender_ref.get(parent)) === null || _a === void 0 ? void 0 : _a.add(path);
266
- };
267
- DomRenderProxy.prototype.addRawSetAndRender = function (path, rawSet) {
268
- this.addRawSet(path, rawSet);
269
- this.render([rawSet]);
270
- };
271
- DomRenderProxy.prototype.addRawSet = function (path, rawSet) {
272
- var _a;
273
- // console.log('addRawSet-->', path, rawSet)
274
- if (!this._rawSets.get(path)) {
275
- this._rawSets.set(path, new Set());
276
- }
277
- (_a = this._rawSets.get(path)) === null || _a === void 0 ? void 0 : _a.add(rawSet);
278
- };
279
- // public removeRawSet(...raws: RawSet[]) {
280
- // this._rawSets.forEach(it => {
281
- // raws.forEach(sit => it.delete(sit));
282
- // })
283
- // this.garbageRawSet();
284
- // }
285
- DomRenderProxy.prototype.removeRawSet = function () {
286
- var raws = [];
287
- for (var _i = 0; _i < arguments.length; _i++) {
288
- raws[_i] = arguments[_i];
289
- }
290
- this._rawSets.forEach(function (it) {
291
- it.forEach(function (sit) {
292
- if (!sit.isConnected) {
293
- it.delete(sit);
294
- }
295
- else if (raws.includes(sit)) {
296
- it.delete(sit);
297
- }
298
- });
299
- });
300
- this.targetGarbageRawSet();
301
- };
302
- DomRenderProxy.prototype.targetGarbageRawSet = function () {
303
- var _this = this;
304
- this._targets.forEach(function (it) {
305
- if (!it.isConnected) {
306
- _this._targets.delete(it);
307
- }
308
- });
309
- };
310
- DomRenderProxy.prototype.garbageRawSet = function () {
311
- var _this = this;
312
- this._targets.forEach(function (it) {
313
- if (!it.isConnected) {
314
- _this._targets.delete(it);
315
- }
316
- });
317
- this._rawSets.forEach(function (it) {
318
- it.forEach(function (sit) {
319
- if (!sit.isConnected) {
320
- it.delete(sit);
321
- }
322
- });
323
- });
324
- };
325
- return DomRenderProxy;
326
- }());
327
- exports.DomRenderProxy = DomRenderProxy;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomRenderProxy = void 0;
4
+ var RawSet_1 = require("./RawSet");
5
+ var EventManager_1 = require("./events/EventManager");
6
+ var ScriptUtils_1 = require("./utils/script/ScriptUtils");
7
+ var Types_1 = require("./types/Types");
8
+ var excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
9
+ var DomRenderProxy = /** @class */ (function () {
10
+ function DomRenderProxy(_domRender_origin, target, config) {
11
+ this._domRender_origin = _domRender_origin;
12
+ this.config = config;
13
+ this._domRender_ref = new Map();
14
+ this._rawSets = new Map();
15
+ this._targets = new Set();
16
+ if (target) {
17
+ this._targets.add(target);
18
+ }
19
+ }
20
+ DomRenderProxy.unFinal = function (obj) {
21
+ return Types_1.DomRenderFinalProxy.unFinal(obj);
22
+ };
23
+ DomRenderProxy.final = function (obj) {
24
+ return Types_1.DomRenderFinalProxy.final(obj);
25
+ };
26
+ DomRenderProxy.isFinal = function (obj) {
27
+ return Types_1.DomRenderFinalProxy.isFinal(obj);
28
+ };
29
+ DomRenderProxy.prototype.run = function (objProxy) {
30
+ var _this = this;
31
+ var _a, _b;
32
+ this._domRender_proxy = objProxy;
33
+ (_b = (_a = objProxy) === null || _a === void 0 ? void 0 : _a.onProxyDomRender) === null || _b === void 0 ? void 0 : _b.call(_a, this.config);
34
+ var obj = objProxy._DomRender_origin;
35
+ if (obj) {
36
+ Object.keys(obj).forEach(function (it) {
37
+ var _a, _b;
38
+ // console.log('key-------->', it)
39
+ var target = obj[it];
40
+ if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Types_1.Shield)) {
41
+ // console.log('target-------->', it, target);
42
+ // console.count('target')
43
+ // console.log('target-------->')
44
+ var filter = (_b = (_a = _this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(function (it) { return target instanceof it; })) !== null && _b !== void 0 ? _b : [];
45
+ if (filter.length === 0) {
46
+ var proxyAfter = _this.proxy(objProxy, target, it);
47
+ obj[it] = proxyAfter;
48
+ }
49
+ }
50
+ });
51
+ }
52
+ this._targets.forEach(function (target) {
53
+ _this.initRender(target);
54
+ });
55
+ };
56
+ DomRenderProxy.prototype.initRender = function (target) {
57
+ var _this = this;
58
+ var _a, _b, _c, _d, _e, _f, _g;
59
+ var onCreate = (_b = (_a = target).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, "".concat(EventManager_1.EventManager.attrPrefix, "on-create"));
60
+ var createParam = undefined;
61
+ if (onCreate) {
62
+ createParam = ScriptUtils_1.ScriptUtils.evalReturn(onCreate, this._domRender_proxy);
63
+ }
64
+ (_d = (_c = this._domRender_proxy) === null || _c === void 0 ? void 0 : _c.onCreateRender) === null || _d === void 0 ? void 0 : _d.call(_c, createParam);
65
+ var innerHTML = (_e = target.innerHTML) !== null && _e !== void 0 ? _e : '';
66
+ this._targets.add(target);
67
+ var rawSets = RawSet_1.RawSet.checkPointCreates(target, this.config);
68
+ // console.log('-------rawSet', rawSets)
69
+ // 중요 초기에 한번 튕겨줘야함.
70
+ EventManager_1.eventManager.applyEvent(this._domRender_proxy, EventManager_1.eventManager.findAttrElements(target, this.config), this.config);
71
+ rawSets.forEach(function (it) {
72
+ var variables = it.getUsingTriggerVariables(_this.config);
73
+ if (variables.size <= 0) {
74
+ _this.addRawSet('', it);
75
+ }
76
+ else {
77
+ variables.forEach(function (sit) {
78
+ _this.addRawSet(sit, it);
79
+ });
80
+ }
81
+ });
82
+ this.render(this.getRawSets());
83
+ var render = { target: target };
84
+ var creatorMetaData = {
85
+ creator: this._domRender_proxy,
86
+ rootCreator: this._domRender_proxy,
87
+ innerHTML: innerHTML
88
+ };
89
+ (_g = (_f = this._domRender_proxy) === null || _f === void 0 ? void 0 : _f.onInitRender) === null || _g === void 0 ? void 0 : _g.call(_f, { render: render, creatorMetaData: creatorMetaData });
90
+ };
91
+ DomRenderProxy.prototype.getRawSets = function () {
92
+ var set = new Set();
93
+ this._rawSets.forEach(function (v, k) {
94
+ v.forEach(function (it) { return set.add(it); });
95
+ });
96
+ return Array.from(set);
97
+ };
98
+ DomRenderProxy.prototype.render = function (raws) {
99
+ var _this = this;
100
+ if (typeof raws === 'string') {
101
+ var iter = this._rawSets.get(raws);
102
+ if (iter) {
103
+ raws = Array.from(iter);
104
+ }
105
+ else {
106
+ raws = undefined;
107
+ }
108
+ }
109
+ var removeRawSets = [];
110
+ (raws !== null && raws !== void 0 ? raws : this.getRawSets()).forEach(function (it) {
111
+ var _a;
112
+ it.getUsingTriggerVariables(_this.config).forEach(function (path) { return _this.addRawSet(path, it); });
113
+ // console.log('------->', it, it.isConnected)
114
+ if (it.isConnected) {
115
+ if ((_a = it.detect) === null || _a === void 0 ? void 0 : _a.action) {
116
+ it.detect.action();
117
+ }
118
+ else {
119
+ var rawSets = it.render(_this._domRender_proxy, _this.config);
120
+ if (rawSets && rawSets.length > 0) {
121
+ _this.render(rawSets);
122
+ }
123
+ }
124
+ }
125
+ else {
126
+ removeRawSets.push(it);
127
+ // this.removeRawSet(it)
128
+ }
129
+ });
130
+ if (removeRawSets.length > 0) {
131
+ this.removeRawSet.apply(this, removeRawSets);
132
+ }
133
+ };
134
+ DomRenderProxy.prototype.root = function (paths, value, lastDoneExecute) {
135
+ var _this = this;
136
+ if (lastDoneExecute === void 0) { lastDoneExecute = true; }
137
+ // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
138
+ var fullPaths = [];
139
+ if (this._domRender_ref.size > 0) {
140
+ this._domRender_ref.forEach(function (it, key) {
141
+ if ('_DomRender_isProxy' in key) {
142
+ it.forEach(function (sit) {
143
+ var _a;
144
+ try {
145
+ var items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value, lastDoneExecute);
146
+ fullPaths.push(items.join(','));
147
+ }
148
+ catch (e) {
149
+ // 오브젝트들 없어졌을수도있다 Destroy시점에서 오류나는경우가 있다. 따라서 참조 하는부분 없어져야한다.
150
+ // console.error(e)
151
+ // it.delete(sit);
152
+ }
153
+ });
154
+ }
155
+ });
156
+ }
157
+ else {
158
+ var strings = paths.reverse();
159
+ var fullPathStr_1 = strings.map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('').slice(1);
160
+ if (lastDoneExecute) {
161
+ var iterable = this._rawSets.get(fullPathStr_1);
162
+ // array check
163
+ var front = strings.slice(0, strings.length - 1).map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('');
164
+ var last = strings[strings.length - 1];
165
+ var data = ScriptUtils_1.ScriptUtils.evalReturn('this' + front, this._domRender_proxy);
166
+ if (last === 'length' && Array.isArray(data)) {
167
+ var aIterable = this._rawSets.get(front.slice(1));
168
+ if (aIterable) {
169
+ this.render(Array.from(aIterable));
170
+ }
171
+ }
172
+ else if (iterable) {
173
+ // console.log('----->', iterable)
174
+ this.render(Array.from(iterable));
175
+ }
176
+ this._targets.forEach(function (it) {
177
+ // console.log('target------->,', it)
178
+ // return;
179
+ if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
180
+ var targets = EventManager_1.eventManager.findAttrElements(it, _this.config);
181
+ // console.log('------>', targets);
182
+ EventManager_1.eventManager.changeVar(_this._domRender_proxy, targets, "this.".concat(fullPathStr_1), _this.config);
183
+ }
184
+ });
185
+ }
186
+ fullPaths.push(fullPathStr_1);
187
+ }
188
+ return fullPaths;
189
+ };
190
+ DomRenderProxy.prototype.set = function (target, p, value, receiver) {
191
+ var _a, _b, _c;
192
+ if (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) {
193
+ target[p] = value;
194
+ return true;
195
+ }
196
+ // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);
197
+ // if (typeof p === 'string' && '__render' === p) {
198
+ // (target as any)[p] = value;
199
+ // return true;
200
+ // }
201
+ // console.log('set--?', p, target, value);
202
+ if (typeof p === 'string') {
203
+ value = this.proxy(receiver, value, p);
204
+ }
205
+ target[p] = value;
206
+ var fullPath;
207
+ if (typeof p === 'string') {
208
+ fullPath = this.root([p], value);
209
+ }
210
+ // console.log('full path:', fullPath);
211
+ if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnSets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
212
+ (_c = (_b = receiver) === null || _b === void 0 ? void 0 : _b.onBeforeReturnSet) === null || _c === void 0 ? void 0 : _c.call(_b, p, value, fullPath);
213
+ }
214
+ return true;
215
+ };
216
+ DomRenderProxy.prototype.get = function (target, p, receiver) {
217
+ var _a, _b, _c;
218
+ // console.log('get-->', target, p, receiver);
219
+ if (p === '_DomRender_origin') {
220
+ return this._domRender_origin;
221
+ }
222
+ else if (p === '_DomRender_ref') {
223
+ return this._domRender_ref;
224
+ }
225
+ else if (p === '_DomRender_proxy') {
226
+ return this;
227
+ }
228
+ else {
229
+ // Date라던지 이런놈들은-_-프록시가 이상하게 동작해서
230
+ // console.log('--->', p, target, target.bind, 'bind' in target)
231
+ // if ((p in target) && ('bind' in target)) {
232
+ // try{
233
+ // return (target as any)[p].bind(target);
234
+ // }catch (e) {
235
+ // console.error(e)
236
+ // }
237
+ // } else {
238
+ // return (target as any)[p]
239
+ // }
240
+ // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]
241
+ // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])
242
+ // return (target as any)[p]
243
+ var it_1 = target[p];
244
+ if (it_1 && typeof it_1 === 'object' && ('_DomRender_isProxy' in it_1) && Object.prototype.toString.call(it_1._DomRender_origin) === '[object Date]') {
245
+ it_1 = it_1._DomRender_origin;
246
+ }
247
+ if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
248
+ (_c = (_b = receiver) === null || _b === void 0 ? void 0 : _b.onBeforeReturnGet) === null || _c === void 0 ? void 0 : _c.call(_b, p, it_1, this.root([p], it_1, false));
249
+ }
250
+ return it_1;
251
+ }
252
+ };
253
+ DomRenderProxy.prototype.has = function (target, p) {
254
+ return p === '_DomRender_isProxy' || p in target;
255
+ };
256
+ DomRenderProxy.prototype.proxy = function (parentProxy, obj, p) {
257
+ var _a, _b;
258
+ var proxyTarget = ((_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(function (it) { return obj instanceof it; })) !== null && _b !== void 0 ? _b : []).length <= 0;
259
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
260
+ var domRender = new DomRenderProxy(obj, undefined, this.config);
261
+ domRender.addRef(parentProxy, p);
262
+ var proxy = new Proxy(obj, domRender);
263
+ domRender.run(proxy);
264
+ return proxy;
265
+ }
266
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
267
+ var d = obj._DomRender_proxy;
268
+ d.addRef(this._domRender_proxy, p);
269
+ return obj;
270
+ }
271
+ else {
272
+ return obj;
273
+ }
274
+ };
275
+ DomRenderProxy.prototype.addRef = function (parent, path) {
276
+ var _a;
277
+ if (!this._domRender_ref.get(parent)) {
278
+ this._domRender_ref.set(parent, new Set());
279
+ }
280
+ (_a = this._domRender_ref.get(parent)) === null || _a === void 0 ? void 0 : _a.add(path);
281
+ };
282
+ DomRenderProxy.prototype.addRawSetAndRender = function (path, rawSet) {
283
+ this.addRawSet(path, rawSet);
284
+ this.render([rawSet]);
285
+ };
286
+ DomRenderProxy.prototype.addRawSet = function (path, rawSet) {
287
+ var _a;
288
+ // console.log('addRawSet-->', path, rawSet)
289
+ if (!this._rawSets.get(path)) {
290
+ this._rawSets.set(path, new Set());
291
+ }
292
+ (_a = this._rawSets.get(path)) === null || _a === void 0 ? void 0 : _a.add(rawSet);
293
+ };
294
+ // public removeRawSet(...raws: RawSet[]) {
295
+ // this._rawSets.forEach(it => {
296
+ // raws.forEach(sit => it.delete(sit));
297
+ // })
298
+ // this.garbageRawSet();
299
+ // }
300
+ DomRenderProxy.prototype.removeRawSet = function () {
301
+ var raws = [];
302
+ for (var _i = 0; _i < arguments.length; _i++) {
303
+ raws[_i] = arguments[_i];
304
+ }
305
+ this._rawSets.forEach(function (it) {
306
+ it.forEach(function (sit) {
307
+ if (!sit.isConnected) {
308
+ it.delete(sit);
309
+ }
310
+ else if (raws.includes(sit)) {
311
+ it.delete(sit);
312
+ }
313
+ });
314
+ });
315
+ this.targetGarbageRawSet();
316
+ };
317
+ DomRenderProxy.prototype.targetGarbageRawSet = function () {
318
+ var _this = this;
319
+ this._targets.forEach(function (it) {
320
+ if (!it.isConnected) {
321
+ _this._targets.delete(it);
322
+ }
323
+ });
324
+ };
325
+ DomRenderProxy.prototype.garbageRawSet = function () {
326
+ var _this = this;
327
+ this._targets.forEach(function (it) {
328
+ if (!it.isConnected) {
329
+ _this._targets.delete(it);
330
+ }
331
+ });
332
+ this._rawSets.forEach(function (it) {
333
+ it.forEach(function (sit) {
334
+ if (!sit.isConnected) {
335
+ it.delete(sit);
336
+ }
337
+ });
338
+ });
339
+ };
340
+ return DomRenderProxy;
341
+ }());
342
+ exports.DomRenderProxy = DomRenderProxy;