@dooboostore/dom-render 1.0.98

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 (230) hide show
  1. package/DomRender.d.ts +24 -0
  2. package/DomRender.js +115 -0
  3. package/DomRenderProxy.d.ts +38 -0
  4. package/DomRenderProxy.js +586 -0
  5. package/README.MD +938 -0
  6. package/components/ComponentBase.d.ts +41 -0
  7. package/components/ComponentBase.js +210 -0
  8. package/components/ComponentSet.d.ts +22 -0
  9. package/components/ComponentSet.js +23 -0
  10. package/components/appender/Appender.d.ts +23 -0
  11. package/components/appender/Appender.js +59 -0
  12. package/components/checkbox/CheckBox.d.ts +47 -0
  13. package/components/checkbox/CheckBox.js +118 -0
  14. package/components/choose/Choose.d.ts +39 -0
  15. package/components/choose/Choose.js +110 -0
  16. package/components/details/Details.d.ts +57 -0
  17. package/components/details/Details.js +199 -0
  18. package/components/dialog/Dialog.d.ts +1 -0
  19. package/components/dialog/Dialog.js +85 -0
  20. package/components/dialog/example/ImageEditorDialog.d.ts +1 -0
  21. package/components/dialog/example/ImageEditorDialog.js +116 -0
  22. package/components/forOf/ForOf.d.ts +18 -0
  23. package/components/forOf/ForOf.js +32 -0
  24. package/components/if/If.d.ts +21 -0
  25. package/components/if/If.js +40 -0
  26. package/components/index.d.ts +27 -0
  27. package/components/index.js +13 -0
  28. package/components/input/Input.d.ts +34 -0
  29. package/components/input/Input.js +86 -0
  30. package/components/promise/PromiseSwitch.d.ts +55 -0
  31. package/components/promise/PromiseSwitch.js +181 -0
  32. package/components/radio/Radio.d.ts +45 -0
  33. package/components/radio/Radio.js +123 -0
  34. package/components/select/Select.d.ts +23 -0
  35. package/components/select/Select.js +52 -0
  36. package/components/this/This.d.ts +24 -0
  37. package/components/this/This.js +62 -0
  38. package/components/timer/Timer.d.ts +26 -0
  39. package/components/timer/Timer.js +102 -0
  40. package/configs/Config.d.ts +34 -0
  41. package/configs/Config.js +2 -0
  42. package/configs/TargetAttr.d.ts +7 -0
  43. package/configs/TargetAttr.js +2 -0
  44. package/configs/TargetElement.d.ts +16 -0
  45. package/configs/TargetElement.js +2 -0
  46. package/css/parse/index.d.ts +49 -0
  47. package/css/parse/index.js +498 -0
  48. package/css/stringify/compiler.d.ts +34 -0
  49. package/css/stringify/compiler.js +36 -0
  50. package/css/stringify/compress.d.ts +104 -0
  51. package/css/stringify/compress.js +147 -0
  52. package/css/stringify/identity.d.ts +109 -0
  53. package/css/stringify/identity.js +183 -0
  54. package/css/stringify/index.d.ts +24 -0
  55. package/css/stringify/index.js +27 -0
  56. package/css/stringify/types.d.ts +15 -0
  57. package/css/stringify/types.js +2 -0
  58. package/css/types.d.ts +10 -0
  59. package/css/types.js +2 -0
  60. package/decorators/DomRenderNoProxy.d.ts +4 -0
  61. package/decorators/DomRenderNoProxy.js +15 -0
  62. package/events/EventManager.d.ts +68 -0
  63. package/events/EventManager.js +477 -0
  64. package/index.d.ts +2 -0
  65. package/index.js +2 -0
  66. package/iterators/Range.d.ts +24 -0
  67. package/iterators/Range.js +70 -0
  68. package/lifecycle/OnBeforeReturnGet.d.ts +4 -0
  69. package/lifecycle/OnBeforeReturnGet.js +2 -0
  70. package/lifecycle/OnBeforeReturnSet.d.ts +5 -0
  71. package/lifecycle/OnBeforeReturnSet.js +4 -0
  72. package/lifecycle/OnChangeAttrRender.d.ts +9 -0
  73. package/lifecycle/OnChangeAttrRender.js +4 -0
  74. package/lifecycle/OnChildRenderedByProperty.d.ts +5 -0
  75. package/lifecycle/OnChildRenderedByProperty.js +4 -0
  76. package/lifecycle/OnCreateRender.d.ts +5 -0
  77. package/lifecycle/OnCreateRender.js +4 -0
  78. package/lifecycle/OnCreateRenderData.d.ts +10 -0
  79. package/lifecycle/OnCreateRenderData.js +4 -0
  80. package/lifecycle/OnCreateRendered.d.ts +8 -0
  81. package/lifecycle/OnCreateRendered.js +4 -0
  82. package/lifecycle/OnCreatedThisChild.d.ts +6 -0
  83. package/lifecycle/OnCreatedThisChild.js +4 -0
  84. package/lifecycle/OnDestroyRender.d.ts +9 -0
  85. package/lifecycle/OnDestroyRender.js +4 -0
  86. package/lifecycle/OnInitRender.d.ts +6 -0
  87. package/lifecycle/OnInitRender.js +4 -0
  88. package/lifecycle/OnProxyDomRender.d.ts +5 -0
  89. package/lifecycle/OnProxyDomRender.js +2 -0
  90. package/lifecycle/dr-this/OnDrThisBind.d.ts +5 -0
  91. package/lifecycle/dr-this/OnDrThisBind.js +4 -0
  92. package/lifecycle/dr-this/OnDrThisUnBind.d.ts +5 -0
  93. package/lifecycle/dr-this/OnDrThisUnBind.js +4 -0
  94. package/managers/RenderManager.d.ts +2 -0
  95. package/managers/RenderManager.js +12 -0
  96. package/messenger/DefaultMessenger.d.ts +4 -0
  97. package/messenger/DefaultMessenger.js +4 -0
  98. package/messenger/Messenger.d.ts +79 -0
  99. package/messenger/Messenger.js +185 -0
  100. package/operators/Appender.d.ts +15 -0
  101. package/operators/Appender.js +90 -0
  102. package/operators/Dr.d.ts +9 -0
  103. package/operators/Dr.js +53 -0
  104. package/operators/DrAppender.d.ts +9 -0
  105. package/operators/DrAppender.js +69 -0
  106. package/operators/DrFor.d.ts +9 -0
  107. package/operators/DrFor.js +58 -0
  108. package/operators/DrForOf.d.ts +9 -0
  109. package/operators/DrForOf.js +120 -0
  110. package/operators/DrForm.d.ts +9 -0
  111. package/operators/DrForm.js +79 -0
  112. package/operators/DrIf.d.ts +9 -0
  113. package/operators/DrIf.js +70 -0
  114. package/operators/DrInnerHTML.d.ts +9 -0
  115. package/operators/DrInnerHTML.js +48 -0
  116. package/operators/DrInnerText.d.ts +9 -0
  117. package/operators/DrInnerText.js +46 -0
  118. package/operators/DrPre.d.ts +8 -0
  119. package/operators/DrPre.js +22 -0
  120. package/operators/DrRepeat.d.ts +9 -0
  121. package/operators/DrRepeat.js +70 -0
  122. package/operators/DrStripElement.d.ts +9 -0
  123. package/operators/DrStripElement.js +50 -0
  124. package/operators/DrTargetAttr.d.ts +8 -0
  125. package/operators/DrTargetAttr.js +45 -0
  126. package/operators/DrTargetElement.d.ts +13 -0
  127. package/operators/DrTargetElement.js +91 -0
  128. package/operators/DrTargetElementIsElement.d.ts +13 -0
  129. package/operators/DrTargetElementIsElement.js +79 -0
  130. package/operators/DrThis.d.ts +7 -0
  131. package/operators/DrThis.js +72 -0
  132. package/operators/DrThisProperty.d.ts +11 -0
  133. package/operators/DrThisProperty.js +93 -0
  134. package/operators/OperatorExecuter.d.ts +50 -0
  135. package/operators/OperatorExecuter.js +50 -0
  136. package/operators/OperatorExecuterAttrRequire.d.ts +9 -0
  137. package/operators/OperatorExecuterAttrRequire.js +25 -0
  138. package/package.json +70 -0
  139. package/rawsets/AttrInitCallBack.d.ts +6 -0
  140. package/rawsets/AttrInitCallBack.js +2 -0
  141. package/rawsets/Attrs.d.ts +27 -0
  142. package/rawsets/Attrs.js +2 -0
  143. package/rawsets/CreatorMetaData.d.ts +20 -0
  144. package/rawsets/CreatorMetaData.js +2 -0
  145. package/rawsets/DestroyOptionType.d.ts +5 -0
  146. package/rawsets/DestroyOptionType.js +6 -0
  147. package/rawsets/ElementInitCallBack.d.ts +9 -0
  148. package/rawsets/ElementInitCallBack.js +2 -0
  149. package/rawsets/RawSet.d.ts +180 -0
  150. package/rawsets/RawSet.js +1450 -0
  151. package/rawsets/RawSetOperatorType.d.ts +4 -0
  152. package/rawsets/RawSetOperatorType.js +5 -0
  153. package/rawsets/RawSetType.d.ts +8 -0
  154. package/rawsets/RawSetType.js +9 -0
  155. package/rawsets/Render.d.ts +27 -0
  156. package/rawsets/Render.js +2 -0
  157. package/routers/HashRouter.d.ts +24 -0
  158. package/routers/HashRouter.js +86 -0
  159. package/routers/PathRouter.d.ts +23 -0
  160. package/routers/PathRouter.js +73 -0
  161. package/routers/Router.d.ts +68 -0
  162. package/routers/Router.js +132 -0
  163. package/types/Types.d.ts +12 -0
  164. package/types/Types.js +26 -0
  165. package/validators/AllCheckedValidatorArray.d.ts +7 -0
  166. package/validators/AllCheckedValidatorArray.js +11 -0
  167. package/validators/AllUnCheckedValidatorArray.d.ts +7 -0
  168. package/validators/AllUnCheckedValidatorArray.js +11 -0
  169. package/validators/CheckedValidator.d.ts +6 -0
  170. package/validators/CheckedValidator.js +11 -0
  171. package/validators/CountEqualsCheckedValidatorArray.d.ts +8 -0
  172. package/validators/CountEqualsCheckedValidatorArray.js +12 -0
  173. package/validators/CountEqualsUnCheckedValidatorArray.d.ts +8 -0
  174. package/validators/CountEqualsUnCheckedValidatorArray.js +12 -0
  175. package/validators/CountGreaterThanCheckedValidatorArray.d.ts +8 -0
  176. package/validators/CountGreaterThanCheckedValidatorArray.js +12 -0
  177. package/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +8 -0
  178. package/validators/CountGreaterThanEqualsCheckedValidatorArray.js +12 -0
  179. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +8 -0
  180. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +12 -0
  181. package/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +8 -0
  182. package/validators/CountGreaterThanUnCheckedValidatorArray.js +12 -0
  183. package/validators/CountLessThanCheckedValidatorArray.d.ts +8 -0
  184. package/validators/CountLessThanCheckedValidatorArray.js +12 -0
  185. package/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +8 -0
  186. package/validators/CountLessThanEqualsCheckedValidatorArray.js +12 -0
  187. package/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +8 -0
  188. package/validators/CountLessThanEqualsUnCheckedValidatorArray.js +12 -0
  189. package/validators/CountLessThanUnCheckedValidatorArray.d.ts +8 -0
  190. package/validators/CountLessThanUnCheckedValidatorArray.js +12 -0
  191. package/validators/CountUnCheckedValidatorArray.d.ts +8 -0
  192. package/validators/CountUnCheckedValidatorArray.js +12 -0
  193. package/validators/EmptyValidator.d.ts +6 -0
  194. package/validators/EmptyValidator.js +12 -0
  195. package/validators/ExcludeCheckedValidatorArray.d.ts +9 -0
  196. package/validators/ExcludeCheckedValidatorArray.js +17 -0
  197. package/validators/FormValidator.d.ts +8 -0
  198. package/validators/FormValidator.js +16 -0
  199. package/validators/IncludeCheckedValidatorArray.d.ts +9 -0
  200. package/validators/IncludeCheckedValidatorArray.js +17 -0
  201. package/validators/MultipleValidator.d.ts +9 -0
  202. package/validators/MultipleValidator.js +25 -0
  203. package/validators/NonPassValidator.d.ts +6 -0
  204. package/validators/NonPassValidator.js +10 -0
  205. package/validators/NotEmptyValidator.d.ts +6 -0
  206. package/validators/NotEmptyValidator.js +13 -0
  207. package/validators/NotRegExpTestValidator.d.ts +7 -0
  208. package/validators/NotRegExpTestValidator.js +20 -0
  209. package/validators/PassValidator.d.ts +6 -0
  210. package/validators/PassValidator.js +10 -0
  211. package/validators/RegExpTestValidator.d.ts +7 -0
  212. package/validators/RegExpTestValidator.js +21 -0
  213. package/validators/RequiredValidator.d.ts +6 -0
  214. package/validators/RequiredValidator.js +12 -0
  215. package/validators/UnCheckedValidator.d.ts +6 -0
  216. package/validators/UnCheckedValidator.js +11 -0
  217. package/validators/ValidMultipleValidator.d.ts +10 -0
  218. package/validators/ValidMultipleValidator.js +12 -0
  219. package/validators/ValidValidator.d.ts +7 -0
  220. package/validators/ValidValidator.js +11 -0
  221. package/validators/ValidValidatorArray.d.ts +8 -0
  222. package/validators/ValidValidatorArray.js +11 -0
  223. package/validators/Validator.d.ts +58 -0
  224. package/validators/Validator.js +203 -0
  225. package/validators/ValidatorArray.d.ts +18 -0
  226. package/validators/ValidatorArray.js +77 -0
  227. package/validators/ValueEqualsValidator.d.ts +7 -0
  228. package/validators/ValueEqualsValidator.js +11 -0
  229. package/validators/ValueNotEqualsValidator.d.ts +7 -0
  230. package/validators/ValueNotEqualsValidator.js +11 -0
@@ -0,0 +1,586 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import 'reflect-metadata';
11
+ import { RawSet } from './rawsets/RawSet';
12
+ import { EventManager, eventManager } from './events/EventManager';
13
+ import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';
14
+ import { DomRenderFinalProxy, Shield } from './types/Types';
15
+ import { RawSetType } from './rawsets/RawSetType';
16
+ import { DrThisProperty } from './operators/DrThisProperty';
17
+ import { RawSetOperatorType } from './rawsets/RawSetOperatorType';
18
+ import { ComponentSet } from './components/ComponentSet';
19
+ import { DomRenderNoProxyKey } from './decorators/DomRenderNoProxy';
20
+ import { isOnCreateRender } from './lifecycle/OnCreateRender';
21
+ import { isOnInitRender } from './lifecycle/OnInitRender';
22
+ import { isOnCreateRenderData } from './lifecycle/OnCreateRenderData';
23
+ import { isOnChangeAttrRender } from './lifecycle/OnChangeAttrRender';
24
+ import { DocumentUtils } from '@dooboostore/core-web/document/DocumentUtils';
25
+ import { isDefined } from '@dooboostore/core/types';
26
+ import { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';
27
+ import { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';
28
+ const excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
29
+ export class DomRenderProxy {
30
+ constructor(_domRender_origin, target, config) {
31
+ this._domRender_origin = _domRender_origin;
32
+ this.config = config;
33
+ this._domRender_ref = new Map();
34
+ this._rawSets = new Map();
35
+ this._targets = new Set();
36
+ if (target) {
37
+ this._targets.add(target);
38
+ }
39
+ }
40
+ static unFinal(obj) {
41
+ return DomRenderFinalProxy.unFinal(obj);
42
+ }
43
+ static final(obj) {
44
+ return DomRenderFinalProxy.final(obj);
45
+ }
46
+ static isFinal(obj) {
47
+ return DomRenderFinalProxy.isFinal(obj);
48
+ }
49
+ run(objProxy) {
50
+ var _a;
51
+ this._domRender_proxy = objProxy;
52
+ (_a = objProxy === null || objProxy === void 0 ? void 0 : objProxy.onProxyDomRender) === null || _a === void 0 ? void 0 : _a.call(objProxy, this.config);
53
+ const obj = objProxy._DomRender_origin;
54
+ if (obj) {
55
+ Object.keys(obj).forEach(it => {
56
+ var _a, _b;
57
+ // Reflect 메타데이터에서 domRender:NoProxy 여부 확인
58
+ try {
59
+ const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, it) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
60
+ if (isNoProxy) {
61
+ return obj;
62
+ }
63
+ }
64
+ catch (e) {
65
+ }
66
+ const target = obj[it];
67
+ if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {
68
+ const filter = (_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(it => target instanceof it)) !== null && _b !== void 0 ? _b : [];
69
+ if (filter.length === 0) {
70
+ const proxyAfter = this.proxy(objProxy, target, it);
71
+ obj[it] = proxyAfter;
72
+ }
73
+ }
74
+ });
75
+ }
76
+ // console.log('target', this._targets);
77
+ this._targets.forEach(target => {
78
+ this.initRender(target);
79
+ });
80
+ }
81
+ initRender(target) {
82
+ var _a, _b, _c;
83
+ // if (target instanceof Element) {
84
+ // target.setAttribute('dr-this', 'this');
85
+ // const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);
86
+ // this.render(rawSets)
87
+ // return;
88
+ // }
89
+ //
90
+ if (target instanceof Element) {
91
+ // 중요: 나를통해 이어진곳의 위치를 남겨야된다 안그러면 TargetElement는 알수 있는 방법이 없다. 여기서 흔적을 남겨줘야 한다.
92
+ // const targetElementNames = (this.config.targetElements?.map(it => it.name.toLowerCase().replaceAll('.', '\\.')) ?? []).join(',');
93
+ // Array.from(target.querySelectorAll(targetElementNames)).forEach(it => it.setAttribute(EventManager.parentVariablePathAttrName, '@this@'));
94
+ target.innerHTML = target.innerHTML.replace(/@this@/g, 'this');
95
+ }
96
+ // TODO: 한곳에서 처리 필요할듯.. 너무 산발적으로 있음.
97
+ const onCreate = (_b = (_a = target).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
98
+ let createParam = [];
99
+ if (onCreate) {
100
+ createParam = ScriptUtils.evalReturn(onCreate, this._domRender_proxy);
101
+ if (!Array.isArray(createParam)) {
102
+ createParam = [createParam];
103
+ }
104
+ }
105
+ if (isOnCreateRenderData(this._domRender_proxy)) {
106
+ (_c = this._domRender_proxy) === null || _c === void 0 ? void 0 : _c.onCreateRenderData({ rootParent: this._domRender_proxy });
107
+ }
108
+ if (isOnCreateRender(this._domRender_proxy)) {
109
+ this._domRender_proxy.onCreateRender(...createParam);
110
+ }
111
+ // const innerHTML = (target as any).innerHTML ?? '';
112
+ this._targets.add(target);
113
+ const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);
114
+ // console.log('initRender -------rawSet', rawSets)
115
+ // 중요 초기에 한번 튕겨줘야함.
116
+ eventManager.applyEvent(this._domRender_proxy, eventManager.findAttrElements(target, this.config), this.config);
117
+ rawSets.forEach(it => {
118
+ const variables = it.getUsingTriggerVariables(this.config);
119
+ if (variables.size <= 0) {
120
+ this.addRawSet('', it);
121
+ }
122
+ else {
123
+ variables.forEach(sit => {
124
+ this.addRawSet(sit, it);
125
+ });
126
+ }
127
+ });
128
+ // console.log('1111111111111', this.getRawSets());
129
+ this.render(this.getRawSets()).then(it => {
130
+ var _a, _b;
131
+ // const render = {target} as Render;
132
+ // const creatorMetaData = {
133
+ // creator: this._domRender_proxy,
134
+ // rootCreator: this._domRender_proxy,
135
+ // innerHTML
136
+ // } as CreatorMetaData;
137
+ const onInit = (_b = (_a = target).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);
138
+ let initParam;
139
+ if (onCreate) {
140
+ initParam = ScriptUtils.evalReturn(onCreate, this._domRender_proxy);
141
+ // if (!Array.isArray(initParam)) {
142
+ // initParam = [initParam];
143
+ // }
144
+ }
145
+ if (isOnInitRender(this._domRender_proxy)) {
146
+ this._domRender_proxy.onInitRender(initParam, {});
147
+ }
148
+ });
149
+ }
150
+ getRawSets() {
151
+ const set = new Set();
152
+ this._rawSets.forEach((v, k) => {
153
+ v.forEach(it => set.add(it));
154
+ });
155
+ return Array.from(set);
156
+ }
157
+ // 중요 important
158
+ render(raws, fullPathStr) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ var _a, _b, _c, _d, _e;
161
+ if (typeof raws === 'string') {
162
+ const iter = this._rawSets.get(raws);
163
+ if (iter) {
164
+ raws = Array.from(iter);
165
+ }
166
+ else {
167
+ raws = undefined;
168
+ }
169
+ }
170
+ const removeRawSets = [];
171
+ const rawSets = raws !== null && raws !== void 0 ? raws : this.getRawSets();
172
+ // console.log('----', rawSets);
173
+ for (const it of rawSets) {
174
+ it.getUsingTriggerVariables(this.config).forEach(path => {
175
+ // console.log('getUsingTriggerVariables->', path);
176
+ this.addRawSet(path, it);
177
+ });
178
+ if (it.isConnected) {
179
+ // 중요 render될때 targetAttribute 체크 해야함.
180
+ const targetAttrMap = (_b = (_a = it.point.node) === null || _a === void 0 ? void 0 : _a.getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, EventManager.normalAttrMapAttrName);
181
+ // console.log('sssssssssSSS?',it, targetAttrMap)
182
+ // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());
183
+ if ((_c = it.detect) === null || _c === void 0 ? void 0 : _c.action) {
184
+ it.detect.action();
185
+ // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {
186
+ }
187
+ else if (it.type === RawSetType.TARGET_ELEMENT && ((_e = (_d = it.dataSet) === null || _d === void 0 ? void 0 : _d.render) === null || _e === void 0 ? void 0 : _e.currentThis) && fullPathStr && targetAttrMap) {
188
+ new Map(JSON.parse(targetAttrMap)).forEach((v, k) => {
189
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
190
+ var _m;
191
+ // it?.data.onChangeAttrRender(k, null, v);
192
+ const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);
193
+ if (isUsing) {
194
+ const targetAttrObject = RawSet.getAttributeObject(it.point.node, { script: (_c = (_b = (_a = it.dataSet) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.renderScript) !== null && _c !== void 0 ? _c : '', obj: Object.assign(this._domRender_proxy, { __render: (_d = it.dataSet) === null || _d === void 0 ? void 0 : _d.render }) });
195
+ (_e = (_m = it.dataSet).render) !== null && _e !== void 0 ? _e : (_m.render = {});
196
+ it.dataSet.render.attribute = targetAttrObject;
197
+ // const render = it.dataSet?.render;
198
+ // console.log('render-->!!!!!', it.dataSet.render);
199
+ // const script = `${render.renderScript} return ${v} `;
200
+ // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));
201
+ if (isOnChangeAttrRender((_g = (_f = it.dataSet) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.currentThis)) {
202
+ (_l = (_k = (_j = (_h = it.dataSet) === null || _h === void 0 ? void 0 : _h.render) === null || _j === void 0 ? void 0 : _j.currentThis) === null || _k === void 0 ? void 0 : _k.onChangeAttrRender) === null || _l === void 0 ? void 0 : _l.call(_k, k, targetAttrObject[k], { rawSet: it });
203
+ }
204
+ }
205
+ // console.log('---?', v, fullPathStr, isUsing);
206
+ });
207
+ // ------------------->
208
+ }
209
+ else {
210
+ const rawSets = yield it.render(this._domRender_proxy, this.config);
211
+ // 그외 자식들 render
212
+ if (rawSets && rawSets.length > 0) {
213
+ yield this.render(rawSets);
214
+ }
215
+ }
216
+ }
217
+ else {
218
+ removeRawSets.push(it);
219
+ }
220
+ }
221
+ if (removeRawSets.length > 0) {
222
+ this.removeRawSet(...removeRawSets);
223
+ }
224
+ return this.getRawSets();
225
+ });
226
+ }
227
+ // domrender_ref로 찾는걸로 바꿈
228
+ // public findRootDomRenderProxy(): DomRenderProxy<any> {
229
+ // let current:DomRenderProxy<any> = this;
230
+ // while (current.parentProxy) {
231
+ // current = current.parentProxy;
232
+ // }
233
+ // return current;
234
+ // }
235
+ root(pathInfos, value, lastDoneExecute = true) {
236
+ // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
237
+ const fullPaths = [];
238
+ if (this._domRender_ref.size > 0) {
239
+ this._domRender_ref.forEach((it, key) => {
240
+ if ('_DomRender_isProxy' in key) {
241
+ it.forEach(sit => {
242
+ var _a;
243
+ try {
244
+ const concat = pathInfos.concat([[{ path: sit, obj: key }]]);
245
+ const items = (_a = key._DomRender_proxy) === null || _a === void 0 ? void 0 : _a.root(concat, value, lastDoneExecute);
246
+ fullPaths.push(items.flat());
247
+ // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});
248
+ // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});
249
+ }
250
+ catch (e) {
251
+ // 오브젝트들 없어졌을수도있다 Destroy시점에서 오류나는경우가 있다. 따라서 참조 하는부분 없어져야한다.
252
+ // console.error(e)
253
+ // it.delete(sit);
254
+ }
255
+ });
256
+ }
257
+ });
258
+ }
259
+ else {
260
+ // const firstPathStr = paths.slice(1).reverse().join('.');
261
+ const strings = pathInfos.reverse().map(it => it.map(it => it.path).join(','));
262
+ // array같은경우도 키값으로 접근하기때문에 특정 인덱스를 찾아서 그부분만 바꿔줄수 있다.
263
+ const fullPathStr = strings.map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('').slice(1);
264
+ // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);
265
+ if (lastDoneExecute) {
266
+ // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);
267
+ // console.log('-------', firstPathStr, firstData);
268
+ // if (firstData instanceof Dictionary) {
269
+ // }
270
+ const iterable = this._rawSets.get(fullPathStr);
271
+ // array check
272
+ const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');
273
+ const lastPropertyName = strings[strings.length - 1];
274
+ const path = 'this' + front;
275
+ const data = ScriptUtils.evalReturn(path, this._domRender_proxy);
276
+ // console.log('root-->', this._rawSets, path, data );
277
+ // console.log('--!!!!', fullPathStr, iterable, data, front, last);
278
+ // 왜여기서 promise를 했을까를 생각해보면......훔.. 변수변경과 화면 뿌려주는걸 동기로하면 성능이 안나오고 비현실적이다. 그래서 promise
279
+ new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
280
+ let rData = [];
281
+ const firstPathStr = front.slice(1);
282
+ // check dictionary
283
+ // console.log('-promise-------', firstPathStr, this)
284
+ const firstTargets = this._rawSets.get(firstPathStr);
285
+ const firstTargetDictionary = [];
286
+ firstTargets === null || firstTargets === void 0 ? void 0 : firstTargets.forEach(it => {
287
+ var _a, _b;
288
+ // console.log('----forEach---', it);
289
+ const type = (_b = (_a = it.point.start).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, 'type');
290
+ if (type === RawSetOperatorType.DR_THIS_PROPERTY) {
291
+ firstTargetDictionary.push(it);
292
+ }
293
+ });
294
+ if (firstTargetDictionary.length > 0) {
295
+ // console.log('ddddddddddd', firstTargetDictionary);
296
+ const rawSets = [];
297
+ let skip = false;
298
+ firstTargetDictionary.forEach(it => {
299
+ var _a, _b;
300
+ const startElement = it.point.start;
301
+ const keys = (_b = (_a = startElement.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)) === null || _a === void 0 ? void 0 : _a.split(',')) !== null && _b !== void 0 ? _b : [];
302
+ if (value === undefined) {
303
+ const rawSet = it.getHasRawSet(lastPropertyName);
304
+ rawSet === null || rawSet === void 0 ? void 0 : rawSet.remove();
305
+ startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));
306
+ }
307
+ if (!keys.includes(lastPropertyName)) {
308
+ const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this.config);
309
+ if (raws) {
310
+ rawSets.push(...raws);
311
+ }
312
+ }
313
+ else {
314
+ skip = true;
315
+ }
316
+ });
317
+ if (skip === false || rawSets.length > 0) {
318
+ rData = yield this.render(rawSets);
319
+ }
320
+ }
321
+ if (lastPropertyName === 'length' && Array.isArray(data)) {
322
+ const aIterable = this._rawSets.get(firstPathStr);
323
+ if (aIterable) {
324
+ rData = yield this.render(Array.from(aIterable));
325
+ }
326
+ }
327
+ else if (iterable) {
328
+ rData = yield this.render(Array.from(iterable), fullPathStr);
329
+ }
330
+ // console.log('-----------', this, lastPropertyName );
331
+ // this._targets.forEach(it => {
332
+ // // return;
333
+ // if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
334
+ // const targets = eventManager.findAttrElements((it as DocumentFragment | Element), this.config);
335
+ // eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);
336
+ // }
337
+ // });
338
+ this._targets.forEach(it => {
339
+ // return;
340
+ if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
341
+ const targets = eventManager.findAttrElements(it, this.config);
342
+ eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);
343
+ }
344
+ });
345
+ //랜더대상된게있으면
346
+ if ((rData === null || rData === void 0 ? void 0 : rData.length) > 0 && isOnChildRenderedByProperty(data)) {
347
+ const propertyValue = ScriptUtils.evalReturn(`this.${lastPropertyName}`, data);
348
+ data.onChildRenderedByProperty(lastPropertyName, propertyValue);
349
+ // data
350
+ }
351
+ resolve(rData);
352
+ })).then(it => {
353
+ // console.log('DonrenderProxy root RenderDone')
354
+ });
355
+ }
356
+ fullPaths.push([{ path: fullPathStr, obj: this._domRender_proxy }]);
357
+ }
358
+ // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))
359
+ return fullPaths;
360
+ }
361
+ set(target, p, value, receiver) {
362
+ // console.log('set------->', target, p, value, receiver, Date.now())
363
+ // console.log('set------->', target, p, value, receiver, Date.now())
364
+ // try {
365
+ // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, target, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
366
+ // if (isNoProxy) {
367
+ // return obj;
368
+ // }
369
+ // }catch (e) {}
370
+ var _a, _b, _c, _d;
371
+ // console.log('set-->', p, value, target, receiver, Reflect.getMetadata(DomRenderNoProxyKey, target, p) );
372
+ if ((typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) ||
373
+ Reflect.getMetadata(DomRenderNoProxyKey, target, p)) {
374
+ target[p] = value;
375
+ return true;
376
+ }
377
+ // const old = (target as any)[p];
378
+ // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);
379
+ // if (typeof p === 'string' && '__render' === p) {
380
+ // (target as any)[p] = value;
381
+ // return true;
382
+ // }
383
+ // console.log('set--?', p, target, value);
384
+ if (typeof p === 'string') {
385
+ value = this.proxy(receiver, value, p);
386
+ }
387
+ // console.log('set typeChecked', (target as any)[p] instanceof ComponentSet, value instanceof ComponentSet);
388
+ // if ((target as any)[p] instanceof ComponentSet) {
389
+ // (target as any)[p]?.obj?.onDrThisUnBind?.();
390
+ // }
391
+ // is ComponentSet
392
+ if ((value instanceof ComponentSet) && (target[p] instanceof ComponentSet)) {
393
+ value.config.beforeComponentSet = target[p];
394
+ }
395
+ target[p] = value;
396
+ let fullPathInfo = [];
397
+ if (typeof p === 'string') {
398
+ fullPathInfo = this.root([[{ path: p, obj: this._domRender_proxy }]], value);
399
+ }
400
+ // console.log('setRooot', fullPathInfo);
401
+ //normal attribute 또한 링크랑 같은 증세라서 이렇게 해줘야한다!!
402
+ // const rootDomRenderProxy = this.findRootDomRenderProxy();
403
+ // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)
404
+ // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)
405
+ (_a = DocumentUtils.querySelectorAllByAttributeName(this.config.window.document, EventManager.normalAttrMapAttrName)) === null || _a === void 0 ? void 0 : _a.forEach(elementInfo => {
406
+ const targets = new Map(ScriptUtils.evalReturn(elementInfo.value));
407
+ Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
408
+ return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
409
+ }).forEach(it => {
410
+ const value1 = ScriptUtils.evalReturn(it.valueScript, it.pathInfo.obj);
411
+ // console.log('proxy set!Attribut======', it.key, value1)
412
+ if (value1 === null) {
413
+ elementInfo.element.removeAttribute(it.key);
414
+ elementInfo.element[it.key] = null;
415
+ }
416
+ else {
417
+ elementInfo.element.setAttribute(it.key, value1);
418
+ elementInfo.element[it.key] = value1;
419
+ }
420
+ });
421
+ });
422
+ // 여기서 링크 같은거 해줘야함
423
+ (_b = DocumentUtils.querySelectorAllByAttributeName(this.config.window.document, EventManager.linkTargetMapAttrName)) === null || _b === void 0 ? void 0 : _b.forEach(elementInfo => {
424
+ const targets = new Map(ScriptUtils.evalReturn(elementInfo.value));
425
+ Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
426
+ return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
427
+ }).forEach(info => {
428
+ const value1 = ScriptUtils.evalReturn(info.valueScript, info.pathInfo.obj);
429
+ if (value1 === null) {
430
+ elementInfo.element.removeAttribute(info.key);
431
+ }
432
+ else {
433
+ elementInfo.element.setAttribute(info.key, value1);
434
+ }
435
+ });
436
+ Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
437
+ return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
438
+ }).forEach(info => {
439
+ const linkInfo = EventManager.linkAttrs.find(it => it.name === info.key);
440
+ if (linkInfo) {
441
+ elementInfo.element[linkInfo.property] = value;
442
+ }
443
+ });
444
+ });
445
+ if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_c = this.config.proxyExcludeOnBeforeReturnSets) !== null && _c !== void 0 ? _c : []).concat(excludeGetSetPropertys).includes(p)) {
446
+ if (isOnBeforeReturnSet(receiver)) {
447
+ (_d = receiver.onBeforeReturnSet) === null || _d === void 0 ? void 0 : _d.call(receiver, p, value, fullPathInfo.map(it => it.map(it => it.path).join()));
448
+ }
449
+ }
450
+ return true;
451
+ }
452
+ get(target, p, receiver) {
453
+ var _a, _b;
454
+ // console.log('get-->', target, p, receiver);
455
+ if (p === '_DomRender_origin') {
456
+ return this._domRender_origin;
457
+ }
458
+ else if (p === '_DomRender_ref') {
459
+ return this._domRender_ref;
460
+ }
461
+ else if (p === '_DomRender_proxy') {
462
+ return this;
463
+ }
464
+ else {
465
+ // Date라던지 이런놈들은-_-프록시가 이상하게 동작해서
466
+ // console.log('--->', p, target, target.bind, 'bind' in target)
467
+ // if ((p in target) && ('bind' in target)) {
468
+ // try{
469
+ // return (target as any)[p].bind(target);
470
+ // }catch (e) {
471
+ // console.error(e)
472
+ // }
473
+ // } else {
474
+ // return (target as any)[p]
475
+ // }
476
+ // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]
477
+ // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])
478
+ // return (target as any)[p]
479
+ let it = target[p];
480
+ if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {
481
+ it = it._DomRender_origin;
482
+ }
483
+ if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
484
+ (_b = receiver === null || receiver === void 0 ? void 0 : receiver.onBeforeReturnGet) === null || _b === void 0 ? void 0 : _b.call(receiver, p, it, this.root([[{ path: p, obj: this._domRender_proxy }]], it, false));
485
+ }
486
+ return it;
487
+ }
488
+ }
489
+ deleteProperty(target, p) {
490
+ delete target[p];
491
+ if (typeof p === 'string') {
492
+ this.root([[{ path: p, obj: this._domRender_proxy }]]);
493
+ }
494
+ return true;
495
+ }
496
+ has(target, p) {
497
+ return p === '_DomRender_isProxy' || p in target;
498
+ }
499
+ proxy(parentProxy, obj, p) {
500
+ var _a, _b;
501
+ try {
502
+ const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
503
+ if (isNoProxy) {
504
+ return obj;
505
+ }
506
+ }
507
+ catch (e) {
508
+ }
509
+ const proxyTarget = ((_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(it => obj instanceof it)) !== null && _b !== void 0 ? _b : []).length <= 0;
510
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
511
+ const domRender = new DomRenderProxy(obj, undefined, this.config);
512
+ domRender.addRef(parentProxy, p);
513
+ const proxy = new Proxy(obj, domRender);
514
+ domRender.run(proxy);
515
+ return proxy;
516
+ }
517
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
518
+ const d = obj._DomRender_proxy;
519
+ d.addRef(this._domRender_proxy, p);
520
+ return obj;
521
+ }
522
+ else {
523
+ return obj;
524
+ }
525
+ }
526
+ addRef(parent, path) {
527
+ var _a;
528
+ if (!this._domRender_ref.get(parent)) {
529
+ this._domRender_ref.set(parent, new Set());
530
+ }
531
+ (_a = this._domRender_ref.get(parent)) === null || _a === void 0 ? void 0 : _a.add(path);
532
+ }
533
+ addRawSetAndRender(path, rawSet) {
534
+ this.addRawSet(path, rawSet);
535
+ this.render([rawSet]);
536
+ }
537
+ addRawSet(path, rawSet) {
538
+ var _a;
539
+ // console.log('addRawSet--> path:', path, 'rawSet:', rawSet)
540
+ if (!this._rawSets.get(path)) {
541
+ this._rawSets.set(path, new Set());
542
+ }
543
+ (_a = this._rawSets.get(path)) === null || _a === void 0 ? void 0 : _a.add(rawSet);
544
+ }
545
+ // public removeRawSet(...raws: RawSet[]) {
546
+ // this._rawSets.forEach(it => {
547
+ // raws.forEach(sit => it.delete(sit));
548
+ // })
549
+ // this.garbageRawSet();
550
+ // }
551
+ removeRawSet(...raws) {
552
+ this._rawSets.forEach(it => {
553
+ it.forEach(sit => {
554
+ if (!sit.isConnected) {
555
+ it.delete(sit);
556
+ }
557
+ else if (raws.includes(sit)) {
558
+ it.delete(sit);
559
+ }
560
+ });
561
+ });
562
+ this.targetGarbageRawSet();
563
+ }
564
+ targetGarbageRawSet() {
565
+ this._targets.forEach(it => {
566
+ if (!it.isConnected) {
567
+ this._targets.delete(it);
568
+ }
569
+ });
570
+ }
571
+ garbageRawSet() {
572
+ this._targets.forEach(it => {
573
+ if (!it.isConnected) {
574
+ this._targets.delete(it);
575
+ }
576
+ });
577
+ this._rawSets.forEach(it => {
578
+ it.forEach(sit => {
579
+ if (!sit.isConnected) {
580
+ it.delete(sit);
581
+ }
582
+ });
583
+ });
584
+ }
585
+ }
586
+ //# sourceMappingURL=DomRenderProxy.js.map