dom-render 1.0.73 → 1.0.76

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 (159) hide show
  1. package/Config.d.ts +38 -36
  2. package/Config.js +2 -2
  3. package/DomRender.d.ts +28 -4
  4. package/DomRender.js +90 -39
  5. package/DomRenderProxy.d.ts +29 -29
  6. package/DomRenderProxy.js +338 -327
  7. package/README.MD +638 -511
  8. package/RawSet.d.ts +140 -117
  9. package/RawSet.js +765 -882
  10. package/components/ComponentSet.d.ts +7 -0
  11. package/components/ComponentSet.js +14 -0
  12. package/dist/bundle.js +3796 -3133
  13. package/events/EventManager.d.ts +47 -47
  14. package/events/EventManager.js +499 -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 -0
  24. package/lifecycle/OnDestroyRender.js +2 -0
  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 +4 -0
  38. package/operators/AttrExpresion.js +68 -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 -22
  73. package/routers/Router.js +116 -94
  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,338 @@
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, 'dr-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
+ EventManager_1.eventManager.applyEvent(this._domRender_proxy, EventManager_1.eventManager.findAttrElements(target, this.config), this.config);
70
+ rawSets.forEach(function (it) {
71
+ var variables = it.getUsingTriggerVariables(_this.config);
72
+ if (variables.size <= 0) {
73
+ _this.addRawSet('', it);
74
+ }
75
+ else {
76
+ variables.forEach(function (sit) {
77
+ _this.addRawSet(sit, it);
78
+ });
79
+ }
80
+ });
81
+ this.render(this.getRawSets());
82
+ var render = { target: target };
83
+ var creatorMetaData = {
84
+ creator: this._domRender_proxy,
85
+ rootCreator: this._domRender_proxy,
86
+ innerHTML: innerHTML
87
+ };
88
+ (_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 });
89
+ };
90
+ DomRenderProxy.prototype.getRawSets = function () {
91
+ var set = new Set();
92
+ this._rawSets.forEach(function (v, k) {
93
+ v.forEach(function (it) { return set.add(it); });
94
+ });
95
+ return Array.from(set);
96
+ };
97
+ DomRenderProxy.prototype.render = function (raws) {
98
+ var _this = this;
99
+ if (typeof raws === 'string') {
100
+ var iter = this._rawSets.get(raws);
101
+ if (iter) {
102
+ raws = Array.from(iter);
103
+ }
104
+ else {
105
+ raws = undefined;
106
+ }
107
+ }
108
+ var removeRawSets = [];
109
+ (raws !== null && raws !== void 0 ? raws : this.getRawSets()).forEach(function (it) {
110
+ var _a;
111
+ it.getUsingTriggerVariables(_this.config).forEach(function (path) { return _this.addRawSet(path, it); });
112
+ // console.log('------->', it, it.isConnected)
113
+ if (it.isConnected) {
114
+ if ((_a = it.detect) === null || _a === void 0 ? void 0 : _a.action) {
115
+ it.detect.action();
116
+ }
117
+ else {
118
+ var rawSets = it.render(_this._domRender_proxy, _this.config);
119
+ if (rawSets && rawSets.length > 0) {
120
+ _this.render(rawSets);
121
+ }
122
+ }
123
+ }
124
+ else {
125
+ removeRawSets.push(it);
126
+ // this.removeRawSet(it)
127
+ }
128
+ });
129
+ if (removeRawSets.length > 0) {
130
+ this.removeRawSet.apply(this, removeRawSets);
131
+ }
132
+ };
133
+ DomRenderProxy.prototype.root = function (paths, value, lastDoneExecute) {
134
+ var _this = this;
135
+ if (lastDoneExecute === void 0) { lastDoneExecute = true; }
136
+ // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
137
+ var fullPaths = [];
138
+ if (this._domRender_ref.size > 0) {
139
+ this._domRender_ref.forEach(function (it, key) {
140
+ if ('_DomRender_isProxy' in key) {
141
+ it.forEach(function (sit) {
142
+ var _a;
143
+ try {
144
+ var items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(paths.concat(sit), value, lastDoneExecute);
145
+ fullPaths.push(items.join(','));
146
+ }
147
+ catch (e) {
148
+ // 오브젝트들 없어졌을수도있다 Destroy시점에서 오류나는경우가 있다. 따라서 참조 하는부분 없어져야한다.
149
+ // console.error(e)
150
+ // it.delete(sit);
151
+ }
152
+ });
153
+ }
154
+ });
155
+ }
156
+ else {
157
+ var strings = paths.reverse();
158
+ var fullPathStr_1 = strings.map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('').slice(1);
159
+ if (lastDoneExecute) {
160
+ var iterable = this._rawSets.get(fullPathStr_1);
161
+ // array check
162
+ var front = strings.slice(0, strings.length - 1).map(function (it) { return isNaN(Number(it)) ? '.' + it : "[".concat(it, "]"); }).join('');
163
+ var last = strings[strings.length - 1];
164
+ var data = ScriptUtils_1.ScriptUtils.evalReturn('this' + front, this._domRender_proxy);
165
+ if (last === 'length' && Array.isArray(data)) {
166
+ var aIterable = this._rawSets.get(front.slice(1));
167
+ if (aIterable) {
168
+ this.render(Array.from(aIterable));
169
+ }
170
+ }
171
+ else if (iterable) {
172
+ // console.log('----->', iterable)
173
+ this.render(Array.from(iterable));
174
+ }
175
+ this._targets.forEach(function (it) {
176
+ if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
177
+ var targets = EventManager_1.eventManager.findAttrElements(it, _this.config);
178
+ EventManager_1.eventManager.changeVar(_this._domRender_proxy, targets, "this.".concat(fullPathStr_1), _this.config);
179
+ }
180
+ });
181
+ }
182
+ fullPaths.push(fullPathStr_1);
183
+ }
184
+ return fullPaths;
185
+ };
186
+ DomRenderProxy.prototype.set = function (target, p, value, receiver) {
187
+ var _a, _b, _c;
188
+ if (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) {
189
+ target[p] = value;
190
+ return true;
191
+ }
192
+ // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);
193
+ // if (typeof p === 'string' && '__render' === p) {
194
+ // (target as any)[p] = value;
195
+ // return true;
196
+ // }
197
+ // console.log('set--?', p, target, value);
198
+ if (typeof p === 'string') {
199
+ value = this.proxy(receiver, value, p);
200
+ }
201
+ target[p] = value;
202
+ var fullPath;
203
+ if (typeof p === 'string') {
204
+ fullPath = this.root([p], value);
205
+ }
206
+ // console.log('full path:', fullPath);
207
+ if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnSets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
208
+ (_c = (_b = receiver) === null || _b === void 0 ? void 0 : _b.onBeforeReturnSet) === null || _c === void 0 ? void 0 : _c.call(_b, p, value, fullPath);
209
+ }
210
+ return true;
211
+ };
212
+ DomRenderProxy.prototype.get = function (target, p, receiver) {
213
+ var _a, _b, _c;
214
+ // console.log('get-->', target, p, receiver);
215
+ if (p === '_DomRender_origin') {
216
+ return this._domRender_origin;
217
+ }
218
+ else if (p === '_DomRender_ref') {
219
+ return this._domRender_ref;
220
+ }
221
+ else if (p === '_DomRender_proxy') {
222
+ return this;
223
+ }
224
+ else {
225
+ // Date라던지 이런놈들은-_-프록시가 이상하게 동작해서
226
+ // console.log('--->', p, target, target.bind, 'bind' in target)
227
+ // if ((p in target) && ('bind' in target)) {
228
+ // try{
229
+ // return (target as any)[p].bind(target);
230
+ // }catch (e) {
231
+ // console.error(e)
232
+ // }
233
+ // } else {
234
+ // return (target as any)[p]
235
+ // }
236
+ // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]
237
+ // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])
238
+ // return (target as any)[p]
239
+ var it_1 = target[p];
240
+ if (it_1 && typeof it_1 === 'object' && ('_DomRender_isProxy' in it_1) && Object.prototype.toString.call(it_1._DomRender_origin) === '[object Date]') {
241
+ it_1 = it_1._DomRender_origin;
242
+ }
243
+ if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
244
+ (_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));
245
+ }
246
+ return it_1;
247
+ }
248
+ };
249
+ DomRenderProxy.prototype.has = function (target, p) {
250
+ return p === '_DomRender_isProxy' || p in target;
251
+ };
252
+ DomRenderProxy.prototype.proxy = function (parentProxy, obj, p) {
253
+ var _a, _b;
254
+ 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;
255
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
256
+ var domRender = new DomRenderProxy(obj, undefined, this.config);
257
+ domRender.addRef(parentProxy, p);
258
+ var proxy = new Proxy(obj, domRender);
259
+ domRender.run(proxy);
260
+ return proxy;
261
+ }
262
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Types_1.Shield)) {
263
+ var d = obj._DomRender_proxy;
264
+ d.addRef(this._domRender_proxy, p);
265
+ return obj;
266
+ }
267
+ else {
268
+ return obj;
269
+ }
270
+ };
271
+ DomRenderProxy.prototype.addRef = function (parent, path) {
272
+ var _a;
273
+ if (!this._domRender_ref.get(parent)) {
274
+ this._domRender_ref.set(parent, new Set());
275
+ }
276
+ (_a = this._domRender_ref.get(parent)) === null || _a === void 0 ? void 0 : _a.add(path);
277
+ };
278
+ DomRenderProxy.prototype.addRawSetAndRender = function (path, rawSet) {
279
+ this.addRawSet(path, rawSet);
280
+ this.render([rawSet]);
281
+ };
282
+ DomRenderProxy.prototype.addRawSet = function (path, rawSet) {
283
+ var _a;
284
+ // console.log('addRawSet-->', path, rawSet)
285
+ if (!this._rawSets.get(path)) {
286
+ this._rawSets.set(path, new Set());
287
+ }
288
+ (_a = this._rawSets.get(path)) === null || _a === void 0 ? void 0 : _a.add(rawSet);
289
+ };
290
+ // public removeRawSet(...raws: RawSet[]) {
291
+ // this._rawSets.forEach(it => {
292
+ // raws.forEach(sit => it.delete(sit));
293
+ // })
294
+ // this.garbageRawSet();
295
+ // }
296
+ DomRenderProxy.prototype.removeRawSet = function () {
297
+ var raws = [];
298
+ for (var _i = 0; _i < arguments.length; _i++) {
299
+ raws[_i] = arguments[_i];
300
+ }
301
+ this._rawSets.forEach(function (it) {
302
+ it.forEach(function (sit) {
303
+ if (!sit.isConnected) {
304
+ it.delete(sit);
305
+ }
306
+ else if (raws.includes(sit)) {
307
+ it.delete(sit);
308
+ }
309
+ });
310
+ });
311
+ this.targetGarbageRawSet();
312
+ };
313
+ DomRenderProxy.prototype.targetGarbageRawSet = function () {
314
+ var _this = this;
315
+ this._targets.forEach(function (it) {
316
+ if (!it.isConnected) {
317
+ _this._targets.delete(it);
318
+ }
319
+ });
320
+ };
321
+ DomRenderProxy.prototype.garbageRawSet = function () {
322
+ var _this = this;
323
+ this._targets.forEach(function (it) {
324
+ if (!it.isConnected) {
325
+ _this._targets.delete(it);
326
+ }
327
+ });
328
+ this._rawSets.forEach(function (it) {
329
+ it.forEach(function (sit) {
330
+ if (!sit.isConnected) {
331
+ it.delete(sit);
332
+ }
333
+ });
334
+ });
335
+ };
336
+ return DomRenderProxy;
337
+ }());
338
+ exports.DomRenderProxy = DomRenderProxy;