@dooboostore/dom-render 1.0.108 → 1.0.110

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 (236) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -26
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +134 -62
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +32 -21
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +24 -6
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -1
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/appender/Appender.js +0 -3
  13. package/dist/cjs/components/appender/Appender.js.map +2 -2
  14. package/dist/cjs/components/checkbox/CheckBox.js.map +2 -2
  15. package/dist/cjs/components/choose/Choose.js +7 -1
  16. package/dist/cjs/components/choose/Choose.js.map +2 -2
  17. package/dist/cjs/components/details/Details.js +2 -2
  18. package/dist/cjs/components/details/Details.js.map +2 -2
  19. package/dist/cjs/components/forOf/ForOf.js.map +2 -2
  20. package/dist/cjs/components/if/If.js +2 -2
  21. package/dist/cjs/components/if/If.js.map +2 -2
  22. package/dist/cjs/components/input/Input.js +2 -2
  23. package/dist/cjs/components/input/Input.js.map +2 -2
  24. package/dist/cjs/components/promise/PromiseSwitch.js +6 -6
  25. package/dist/cjs/components/promise/PromiseSwitch.js.map +2 -2
  26. package/dist/cjs/components/radio/Radio.js.map +2 -2
  27. package/dist/cjs/components/router/Route.js +2 -2
  28. package/dist/cjs/components/router/Route.js.map +2 -2
  29. package/dist/cjs/components/router/RouterOutlet.js +17 -3
  30. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  31. package/dist/cjs/components/select/Select.js +26 -12
  32. package/dist/cjs/components/select/Select.js.map +2 -2
  33. package/dist/cjs/components/this/This.js +2 -2
  34. package/dist/cjs/components/this/This.js.map +2 -2
  35. package/dist/cjs/components/timer/Timer.js +15 -13
  36. package/dist/cjs/components/timer/Timer.js.map +2 -2
  37. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  38. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  39. package/dist/cjs/events/EventManager.js +9 -2
  40. package/dist/cjs/events/EventManager.js.map +2 -2
  41. package/dist/cjs/lifecycle/OnInitRender.js.map +1 -1
  42. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  43. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  44. package/dist/cjs/lifecycle/index.js +1 -0
  45. package/dist/cjs/lifecycle/index.js.map +2 -2
  46. package/dist/cjs/operators/DrForOf.js +24 -11
  47. package/dist/cjs/operators/DrForOf.js.map +2 -2
  48. package/dist/cjs/operators/DrIf.js +1 -2
  49. package/dist/cjs/operators/DrIf.js.map +2 -2
  50. package/dist/cjs/operators/DrInnerText.js +2 -2
  51. package/dist/cjs/operators/DrInnerText.js.map +2 -2
  52. package/dist/cjs/operators/DrTargetElement.js +2 -0
  53. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  54. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  55. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  56. package/dist/cjs/package.json +5 -0
  57. package/dist/cjs/rawsets/RawSet.js +392 -115
  58. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  59. package/dist/cjs/rawsets/Render.js.map +1 -1
  60. package/dist/cjs/routers/PathRouter.js +13 -7
  61. package/dist/cjs/routers/PathRouter.js.map +2 -2
  62. package/dist/cjs/routers/Router.js +76 -36
  63. package/dist/cjs/routers/Router.js.map +3 -3
  64. package/dist/esm/DomRender.js +41 -26
  65. package/dist/esm/DomRender.js.map +2 -2
  66. package/dist/esm/DomRenderProxy.js +134 -62
  67. package/dist/esm/DomRenderProxy.js.map +2 -2
  68. package/dist/esm/bundle-entry.js +22 -21
  69. package/dist/esm/bundle-entry.js.map +2 -2
  70. package/dist/esm/components/ComponentBase.js +24 -6
  71. package/dist/esm/components/ComponentBase.js.map +2 -2
  72. package/dist/esm/components/ComponentRouterBase.js +11 -1
  73. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  74. package/dist/esm/components/appender/Appender.js +0 -3
  75. package/dist/esm/components/appender/Appender.js.map +2 -2
  76. package/dist/esm/components/checkbox/CheckBox.js.map +2 -2
  77. package/dist/esm/components/choose/Choose.js +7 -1
  78. package/dist/esm/components/choose/Choose.js.map +2 -2
  79. package/dist/esm/components/details/Details.js +2 -2
  80. package/dist/esm/components/details/Details.js.map +2 -2
  81. package/dist/esm/components/forOf/ForOf.js.map +2 -2
  82. package/dist/esm/components/if/If.js +2 -2
  83. package/dist/esm/components/if/If.js.map +2 -2
  84. package/dist/esm/components/input/Input.js +2 -2
  85. package/dist/esm/components/input/Input.js.map +2 -2
  86. package/dist/esm/components/promise/PromiseSwitch.js +6 -6
  87. package/dist/esm/components/promise/PromiseSwitch.js.map +2 -2
  88. package/dist/esm/components/radio/Radio.js.map +2 -2
  89. package/dist/esm/components/router/Route.js +2 -2
  90. package/dist/esm/components/router/Route.js.map +2 -2
  91. package/dist/esm/components/router/RouterOutlet.js +18 -4
  92. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  93. package/dist/esm/components/select/Select.js +26 -12
  94. package/dist/esm/components/select/Select.js.map +2 -2
  95. package/dist/esm/components/this/This.js +2 -2
  96. package/dist/esm/components/this/This.js.map +2 -2
  97. package/dist/esm/components/timer/Timer.js +15 -13
  98. package/dist/esm/components/timer/Timer.js.map +2 -2
  99. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  100. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  101. package/dist/esm/events/EventManager.js +9 -2
  102. package/dist/esm/events/EventManager.js.map +2 -2
  103. package/dist/esm/lifecycle/OnInitRender.js.map +1 -1
  104. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  105. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  106. package/dist/esm/lifecycle/index.js +1 -0
  107. package/dist/esm/lifecycle/index.js.map +2 -2
  108. package/dist/esm/operators/DrForOf.js +24 -11
  109. package/dist/esm/operators/DrForOf.js.map +2 -2
  110. package/dist/esm/operators/DrIf.js +1 -2
  111. package/dist/esm/operators/DrIf.js.map +2 -2
  112. package/dist/esm/operators/DrInnerText.js +2 -2
  113. package/dist/esm/operators/DrInnerText.js.map +2 -2
  114. package/dist/esm/operators/DrTargetElement.js +2 -0
  115. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  116. package/dist/esm/operators/OperatorExecuter.js +1 -2
  117. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  118. package/dist/esm/rawsets/RawSet.js +392 -115
  119. package/dist/esm/rawsets/RawSet.js.map +3 -3
  120. package/dist/esm/routers/PathRouter.js +13 -7
  121. package/dist/esm/routers/PathRouter.js.map +2 -2
  122. package/dist/esm/routers/Router.js +76 -36
  123. package/dist/esm/routers/Router.js.map +3 -3
  124. package/dist/esm-bundle/dooboostore-dom-render.esm.js +14023 -6402
  125. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  126. package/dist/types/DomRender.d.ts +11 -5
  127. package/dist/types/DomRender.d.ts.map +1 -1
  128. package/dist/types/DomRenderProxy.d.ts +2 -2
  129. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  130. package/dist/types/bundle-entry.d.ts +5 -2
  131. package/dist/types/bundle-entry.d.ts.map +1 -1
  132. package/dist/types/components/ComponentBase.d.ts +8 -2
  133. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  134. package/dist/types/components/ComponentRouterBase.d.ts +8 -0
  135. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -1
  136. package/dist/types/components/appender/Appender.d.ts +0 -2
  137. package/dist/types/components/appender/Appender.d.ts.map +1 -1
  138. package/dist/types/components/checkbox/CheckBox.d.ts.map +1 -1
  139. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  140. package/dist/types/components/details/Details.d.ts +1 -1
  141. package/dist/types/components/details/Details.d.ts.map +1 -1
  142. package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
  143. package/dist/types/components/if/If.d.ts +1 -1
  144. package/dist/types/components/if/If.d.ts.map +1 -1
  145. package/dist/types/components/index.d.ts +2 -1
  146. package/dist/types/components/index.d.ts.map +1 -1
  147. package/dist/types/components/input/Input.d.ts +1 -1
  148. package/dist/types/components/input/Input.d.ts.map +1 -1
  149. package/dist/types/components/promise/PromiseSwitch.d.ts +1 -1
  150. package/dist/types/components/promise/PromiseSwitch.d.ts.map +1 -1
  151. package/dist/types/components/radio/Radio.d.ts.map +1 -1
  152. package/dist/types/components/router/Route.d.ts +1 -1
  153. package/dist/types/components/router/Route.d.ts.map +1 -1
  154. package/dist/types/components/router/RouterOutlet.d.ts +6 -2
  155. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  156. package/dist/types/components/select/Select.d.ts +5 -5
  157. package/dist/types/components/select/Select.d.ts.map +1 -1
  158. package/dist/types/components/this/This.d.ts +1 -1
  159. package/dist/types/components/this/This.d.ts.map +1 -1
  160. package/dist/types/components/timer/Timer.d.ts +6 -4
  161. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  162. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  163. package/dist/types/events/EventManager.d.ts +8 -0
  164. package/dist/types/events/EventManager.d.ts.map +1 -1
  165. package/dist/types/index.d.ts +0 -100
  166. package/dist/types/lifecycle/OnInitRender.d.ts +1 -1
  167. package/dist/types/lifecycle/OnInitRender.d.ts.map +1 -1
  168. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  169. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  170. package/dist/types/lifecycle/index.d.ts +1 -0
  171. package/dist/types/lifecycle/index.d.ts.map +1 -1
  172. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  173. package/dist/types/operators/DrInnerText.d.ts.map +1 -1
  174. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  175. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
  176. package/dist/types/rawsets/RawSet.d.ts +17 -9
  177. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  178. package/dist/types/rawsets/Render.d.ts +1 -0
  179. package/dist/types/rawsets/Render.d.ts.map +1 -1
  180. package/dist/types/routers/PathRouter.d.ts.map +1 -1
  181. package/dist/types/routers/Router.d.ts +11 -14
  182. package/dist/types/routers/Router.d.ts.map +1 -1
  183. package/dist/umd-bundle/dooboostore-dom-render.umd.js +14104 -6502
  184. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  185. package/package.json +9 -8
  186. package/src/DomRender.ts +62 -34
  187. package/src/DomRenderProxy.ts +275 -142
  188. package/src/bundle-entry.ts +5 -3
  189. package/src/components/ComponentBase.ts +33 -11
  190. package/src/components/ComponentRouterBase.ts +17 -2
  191. package/src/components/appender/Appender.ts +0 -5
  192. package/src/components/checkbox/CheckBox.ts +22 -25
  193. package/src/components/choose/Choose.ts +19 -18
  194. package/src/components/details/Details.ts +40 -43
  195. package/src/components/forOf/ForOf.ts +6 -9
  196. package/src/components/if/If.ts +9 -11
  197. package/src/components/input/Input.ts +16 -22
  198. package/src/components/promise/PromiseSwitch.ts +67 -66
  199. package/src/components/radio/Radio.ts +23 -28
  200. package/src/components/router/Route.ts +10 -13
  201. package/src/components/router/RouterOutlet.ts +29 -8
  202. package/src/components/select/Select.ts +47 -33
  203. package/src/components/this/This.ts +13 -12
  204. package/src/components/timer/Timer.ts +29 -65
  205. package/src/decorators/DomRenderNoProxy.ts +3 -1
  206. package/src/events/EventManager.ts +15 -4
  207. package/src/lifecycle/OnInitRender.ts +1 -1
  208. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  209. package/src/lifecycle/index.ts +1 -0
  210. package/src/node_modules/.bin/acorn +17 -0
  211. package/src/node_modules/.bin/browserslist +17 -0
  212. package/src/node_modules/.bin/eslint +17 -0
  213. package/src/node_modules/.bin/sbf +17 -0
  214. package/src/node_modules/.bin/ts-node +17 -0
  215. package/src/node_modules/.bin/ts-node-cwd +17 -0
  216. package/src/node_modules/.bin/ts-node-dev +17 -0
  217. package/src/node_modules/.bin/ts-node-esm +17 -0
  218. package/src/node_modules/.bin/ts-node-script +17 -0
  219. package/src/node_modules/.bin/ts-node-transpile-only +17 -0
  220. package/src/node_modules/.bin/ts-script +17 -0
  221. package/src/node_modules/.bin/tsc +17 -0
  222. package/src/node_modules/.bin/tsnd +17 -0
  223. package/src/node_modules/.bin/tsserver +17 -0
  224. package/src/node_modules/.bin/webpack +17 -0
  225. package/src/node_modules/.bin/webpack-cli +17 -0
  226. package/src/node_modules/.bin/webpack-dev-server +17 -0
  227. package/src/operators/DrForOf.ts +25 -10
  228. package/src/operators/DrIf.ts +1 -1
  229. package/src/operators/DrInnerText.ts +2 -1
  230. package/src/operators/DrTargetElement.ts +14 -0
  231. package/src/operators/OperatorExecuter.ts +1 -2
  232. package/src/rawsets/RawSet.ts +709 -295
  233. package/src/rawsets/Render.ts +1 -0
  234. package/src/routers/PathRouter.ts +14 -7
  235. package/src/routers/Router.ts +107 -61
  236. package/types.d.ts +0 -2825
@@ -1,5 +1,5 @@
1
- import { RawSet } from './rawsets/RawSet';
2
- import { EventManager } from './events/EventManager';
1
+ import { RawSet, RenderResult } from './rawsets/RawSet';
2
+ import { EventManager, NormalAttrDataType } from './events/EventManager';
3
3
  import { DomRenderConfig } from './configs/DomRenderConfig';
4
4
  import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';
5
5
  import { DomRenderFinalProxy, Shield } from './types/Types';
@@ -17,33 +17,47 @@ import { isDefined } from '@dooboostore/core/types';
17
17
  import { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';
18
18
  import { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';
19
19
  import { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';
20
- import {ValidUtils} from '@dooboostore/core/valid/ValidUtils'
20
+ import { ValidUtils } from '@dooboostore/core/valid/ValidUtils';
21
21
  import { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';
22
-
23
- const excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
22
+ import { isOnRawSetRendered } from './lifecycle/OnRawSetRendered';
23
+
24
+ const excludeGetSetPropertys = [
25
+ 'onBeforeReturnGet',
26
+ 'onBeforeReturnSet',
27
+ '__domrender_components',
28
+ '__render',
29
+ '_DomRender_isFinal',
30
+ '_domRender_ref',
31
+ '_rawSets',
32
+ '_domRender_proxy',
33
+ '_targets',
34
+ '_DomRender_origin',
35
+ '_DomRender_ref',
36
+ '_DomRender_proxy'
37
+ ];
24
38
  export const isWrapProxyDomRenderProxy = <T>(obj: T): boolean => {
25
- return obj && typeof obj === 'object' && ('_DomRender_isProxy' in obj);
39
+ return obj && typeof obj === 'object' && '_DomRender_isProxy' in obj;
26
40
  };
27
- export const getDomRenderOriginObject = <T>(obj: T):T => {
41
+ export const getDomRenderOriginObject = <T>(obj: T): T => {
28
42
  if (isWrapProxyDomRenderProxy(obj)) {
29
43
  return (obj as any)._domRender_origin;
30
44
  }
31
45
  return obj;
32
- }
46
+ };
33
47
  export const getDomRenderConfig = (obj: any): DomRenderConfig | undefined => {
34
48
  if (isWrapProxyDomRenderProxy(obj)) {
35
49
  return obj._domRender_config;
36
50
  }
37
51
  return undefined;
38
- }
52
+ };
39
53
  //@ts-ignore
40
54
  export const getDomRenderProxy = <T>(obj: T): DomRenderProxy<T> | undefined => {
41
55
  if (isWrapProxyDomRenderProxy(obj)) {
42
- //@ts-ignore
56
+ //@ts-ignore
43
57
  return (obj as any)._domRender_proxy as DomRenderProxy<T>;
44
58
  }
45
59
  return undefined;
46
- }
60
+ };
47
61
  export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
48
62
  public _domRender_ref = new Map<object, Set<string>>();
49
63
  public _rawSets = new Map<string, Set<RawSet>>();
@@ -51,7 +65,11 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
51
65
  // public _firstTarget: Node;
52
66
  public _targets = new Set<Node>();
53
67
 
54
- constructor(public _domRender_origin: T, target: Node | null | undefined, public _domRender_config: DomRenderConfig) {
68
+ constructor(
69
+ public _domRender_origin: T,
70
+ target: Node | null | undefined,
71
+ public _domRender_config: DomRenderConfig
72
+ ) {
55
73
  if (target) {
56
74
  this._targets.add(target);
57
75
  // this._firstTarget = target;
@@ -75,10 +93,10 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
75
93
  }
76
94
 
77
95
  public static isFinal<T = any>(obj: T) {
78
- return DomRenderFinalProxy.isFinal(obj);
96
+ return ValidUtils.isNull(obj) || DomRenderFinalProxy.isFinal(obj);
79
97
  }
80
98
 
81
- public run(objProxy: T) {
99
+ public async run(objProxy: T) {
82
100
  this._domRender_proxy = objProxy;
83
101
  if (isOnProxyDomRender(objProxy)) {
84
102
  objProxy.onProxyDomRender(this._domRender_config);
@@ -88,14 +106,22 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
88
106
  Object.keys(obj).forEach(it => {
89
107
  // Reflect 메타데이터에서 domRender:NoProxy 여부 확인
90
108
  try {
91
- const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, it) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
109
+ const isNoProxy =
110
+ Reflect.getMetadata(DomRenderNoProxyKey, obj, it) ||
111
+ Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
92
112
  if (isNoProxy) {
93
113
  return obj;
94
114
  }
95
- } catch (e) {
96
- }
115
+ } catch (e) {}
97
116
  const target = obj[it];
98
- if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {
117
+ if (
118
+ target !== undefined &&
119
+ target !== null &&
120
+ typeof target === 'object' &&
121
+ !DomRenderProxy.isFinal(target) &&
122
+ !Object.isFrozen(target) &&
123
+ !(obj instanceof Shield)
124
+ ) {
99
125
  const isExcluded = this._domRender_config.proxyExcludeTyps?.some(it => target instanceof it) ?? false;
100
126
  // const filter = this._domRender_config.proxyExcludeTyps?.filter(it => target instanceof it) ?? [];
101
127
  if (!isExcluded) {
@@ -106,13 +132,12 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
106
132
  });
107
133
  }
108
134
  // console.log('target', this._targets);
109
- this._targets.forEach(target => {
110
- this.initRender(target);
111
- });
135
+ for (let target of this._targets) {
136
+ await this.initRender(target);
137
+ }
112
138
  }
113
139
 
114
- public initRender(target: Node, rawSet?: RawSet) {
115
-
140
+ public async initRender(target: Node, rawSet?: RawSet) {
116
141
  // if (target instanceof Element) {
117
142
  // target.setAttribute('dr-this', 'this');
118
143
  // const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);
@@ -130,7 +155,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
130
155
  const onCreate = (target as any).getAttribute?.(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
131
156
  let createParam: any[] = [];
132
157
  if (onCreate) {
133
- createParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);
158
+ createParam = ObjectUtils.Script.evaluateReturn(onCreate, this._domRender_proxy);
134
159
  if (!Array.isArray(createParam)) {
135
160
  createParam = [createParam];
136
161
  }
@@ -149,7 +174,11 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
149
174
  const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);
150
175
  // console.log('initRender -------rawSet', rawSets)
151
176
  // 중요 초기에 한번 튕겨줘야함.
152
- this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target as Element, this._domRender_config), this._domRender_config);
177
+ this._domRender_config.eventManager.applyEvent(
178
+ this._domRender_proxy,
179
+ this._domRender_config.eventManager.findAttrElements(target as Element, this._domRender_config),
180
+ this._domRender_config
181
+ );
153
182
  rawSets.forEach(it => {
154
183
  const variables = it.getUsingTriggerVariables(this._domRender_config);
155
184
  if (variables.size <= 0) {
@@ -160,26 +189,21 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
160
189
  });
161
190
  }
162
191
  });
163
- this.render(this.getRawSets()).then(it => {
164
- // const render = {target} as Render;
165
- // const creatorMetaData = {
166
- // creator: this._domRender_proxy,
167
- // rootCreator: this._domRender_proxy,
168
- // innerHTML
169
- // } as CreatorMetaData;
192
+
193
+ const targetRawSets = await this.render(this.getRawSets());
194
+ for (let targetRawSet of targetRawSets) {
170
195
  const onInit = (target as any).getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);
171
196
  let initParam: any;
172
197
  if (onCreate) {
173
198
  initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);
174
- // if (!Array.isArray(initParam)) {
175
- // initParam = [initParam];
176
- // }
177
199
  }
178
200
  if (isOnInitRender(this._domRender_proxy)) {
179
- this._domRender_proxy.onInitRender(initParam, rawSet ?? {dataSet: {config: this._domRender_config}} as any);
201
+ await this._domRender_proxy.onInitRender(
202
+ initParam,
203
+ rawSet ?? ({ dataSet: { config: this._domRender_config } } as any)
204
+ );
180
205
  }
181
- });
182
-
206
+ }
183
207
  }
184
208
 
185
209
  public getRawSets() {
@@ -209,6 +233,8 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
209
233
  // console.log('getUsingTriggerVariables->', path);
210
234
  this.addRawSet(path, it);
211
235
  });
236
+
237
+ let renderResult: RenderResult | undefined;
212
238
  if (it.isConnected) {
213
239
  // 중요 render될때 targetAttribute 체크 해야함.
214
240
  const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);
@@ -217,13 +243,23 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
217
243
  if (it.detect?.action) {
218
244
  it.detect.action();
219
245
  // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {
220
- } else if (it.type === RawSetType.TARGET_ELEMENT && it.dataSet?.render?.currentThis && fullPathStr && targetAttrMap) {
221
- new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {
246
+ } else if (
247
+ it.type === RawSetType.TARGET_ELEMENT &&
248
+ it.dataSet?.render?.currentThis &&
249
+ fullPathStr &&
250
+ targetAttrMap
251
+ ) {
252
+ new Map<string, NormalAttrDataType>(JSON.parse(targetAttrMap)).forEach((v, k) => {
222
253
  // it?.data.onChangeAttrRender(k, null, v);
223
- const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);
254
+ // console.log('------->?',v,k);
255
+ const isUsing = v.variablePaths.some(it => EventManager.isUsingThisVar(it.inner, `this.${fullPathStr}`))
256
+ // console.log('------->?',v,k, isUsing);
224
257
  if (isUsing) {
225
- const targetAttrObject = RawSet.getAttributeObject((it.point.node as Element), { script: it.dataSet?.render?.renderScript ?? '', obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render }) });
226
- it.dataSet.render??={};
258
+ const targetAttrObject = RawSet.getAttributeObject(it.point.node as Element, {
259
+ script: it.dataSet?.render?.renderScript ?? '',
260
+ obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render })
261
+ });
262
+ it.dataSet.render ??= {};
227
263
  it.dataSet.render.attribute = targetAttrObject;
228
264
  // const render = it.dataSet?.render;
229
265
  // console.log('render-->!!!!!', it.dataSet.render);
@@ -238,14 +274,22 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
238
274
  // ------------------->
239
275
  } else {
240
276
  const rawSets = await it.render(this._domRender_proxy, this._domRender_config);
277
+ renderResult = rawSets;
241
278
  // 그외 자식들 render
242
- if (rawSets && rawSets.length > 0) {
243
- await this.render(rawSets);
279
+ if (rawSets && rawSets.raws.length > 0) {
280
+ await this.render(rawSets.raws);
244
281
  }
245
282
  }
246
283
  } else {
247
284
  removeRawSets.push(it);
248
285
  }
286
+
287
+ const t = it.findNearThis(this._domRender_proxy);
288
+ // TODO: 호출된곳에서 또 변수를 수정하게되면 무한루프니깐 왠만하면 사용못하게 해야한다.
289
+ if (isOnRawSetRendered(t)) {
290
+ await t.onRawSetRendered(it, { path: fullPathStr, renderResult });
291
+ }
292
+ // console.log('----', it);
249
293
  }
250
294
 
251
295
  if (removeRawSets.length > 0) {
@@ -255,25 +299,32 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
255
299
  }
256
300
 
257
301
  // domrender_ref로 찾는걸로 바꿈
258
- // public findRootDomRenderProxy(): DomRenderProxy<any> {
259
- // let current:DomRenderProxy<any> = this;
260
- // while (current.parentProxy) {
261
- // current = current.parentProxy;
262
- // }
263
- // return current;
264
- // }
302
+ // public findRootDomRenderProxy(): DomRenderProxy<any> {
303
+ // let current:DomRenderProxy<any> = this;
304
+ // while (current.parentProxy) {
305
+ // current = current.parentProxy;
306
+ // }
307
+ // return current;
308
+ // }
265
309
 
266
- public root(pathInfos: {path: string, obj: any}[][], value?: any, lastDoneExecute = true): {path: string, obj:any}[][] {
310
+ public root(
311
+ pathInfos: { path: string; obj: any }[][],
312
+ value?: any,
313
+ lastDoneExecute = true
314
+ ): { path: string; obj: any }[][] {
267
315
  // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
268
- const fullPaths: {path: string, obj:any}[][] = [];
316
+ const fullPaths: { path: string; obj: any }[][] = [];
269
317
  if (this._domRender_ref.size > 0) {
270
318
  this._domRender_ref.forEach((it, key) => {
271
319
  if ('_DomRender_isProxy' in key) {
272
320
  it.forEach(sit => {
273
321
  try {
274
-
275
- const concat = pathInfos.concat([[{path: sit, obj: key}]]);
276
- const items:{path: string, obj:any}[][] = (key as any)._DomRender_proxy?.root(concat, value, lastDoneExecute);
322
+ const concat = pathInfos.concat([[{ path: sit, obj: key }]]);
323
+ const items: { path: string; obj: any }[][] = (key as any)._DomRender_proxy?.root(
324
+ concat,
325
+ value,
326
+ lastDoneExecute
327
+ );
277
328
 
278
329
  fullPaths.push(items.flat());
279
330
  // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});
@@ -288,9 +339,12 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
288
339
  });
289
340
  } else {
290
341
  // const firstPathStr = paths.slice(1).reverse().join('.');
291
- const strings = pathInfos.reverse().map(it=>it.map(it=>it.path).join(','));
342
+ const strings = pathInfos.reverse().map(it => it.map(it => it.path).join(','));
292
343
  // array같은경우도 키값으로 접근하기때문에 특정 인덱스를 찾아서 그부분만 바꿔줄수 있다.
293
- const fullPathStr = strings.map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('').slice(1);
344
+ const fullPathStr = strings
345
+ .map(it => (isNaN(Number(it)) ? '.' + it : `[${it}]`))
346
+ .join('')
347
+ .slice(1);
294
348
  // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);
295
349
  if (lastDoneExecute) {
296
350
  // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);
@@ -299,7 +353,10 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
299
353
  // }
300
354
  const iterable = this._rawSets.get(fullPathStr);
301
355
  // array check
302
- const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');
356
+ const front = strings
357
+ .slice(0, strings.length - 1)
358
+ .map(it => (isNaN(Number(it)) ? '.' + it : `[${it}]`))
359
+ .join('');
303
360
  const lastPropertyName = strings[strings.length - 1];
304
361
  const path = 'this' + front;
305
362
  const data = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);
@@ -316,7 +373,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
316
373
  const firstTargetDictionary: RawSet[] = [];
317
374
  firstTargets?.forEach(it => {
318
375
  // console.log('----forEach---', it);
319
- const type = (it.point.start as Element).getAttribute?.('type');
376
+ const type = (it.point.start as Element)?.getAttribute?.('type');
320
377
  if (type === RawSetOperatorType.DR_THIS_PROPERTY) {
321
378
  firstTargetDictionary.push(it);
322
379
  }
@@ -331,10 +388,19 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
331
388
  if (value === undefined) {
332
389
  const rawSet = it.getHasRawSet(lastPropertyName);
333
390
  rawSet?.remove();
334
- startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));
391
+ startElement.setAttribute(
392
+ RawSet.DR_HAS_KEYS_OPTIONNAME,
393
+ keys.filter(it => it !== lastPropertyName).join(',')
394
+ );
335
395
  }
336
396
  if (!keys.includes(lastPropertyName)) {
337
- const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);
397
+ const raws = DrThisProperty.append(
398
+ this._domRender_proxy,
399
+ fullPathStr,
400
+ lastPropertyName,
401
+ it,
402
+ this._domRender_config
403
+ );
338
404
  if (raws) {
339
405
  rawSets.push(...raws);
340
406
  }
@@ -343,7 +409,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
343
409
  }
344
410
  });
345
411
  if (skip === false || rawSets.length > 0) {
346
- rData = await this.render(rawSets);
412
+ rData = await this.render(rawSets);
347
413
  }
348
414
  }
349
415
 
@@ -357,8 +423,6 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
357
423
  rData = await this.render(Array.from(iterable), fullPathStr);
358
424
  }
359
425
 
360
-
361
-
362
426
  // console.log('-----------', this, lastPropertyName );
363
427
  // this._targets.forEach(it => {
364
428
  // // return;
@@ -368,18 +432,26 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
368
432
  // }
369
433
  // });
370
434
 
371
-
435
+ const Node = ((this._domRender_config.window as any).Node)
372
436
  this._targets.forEach(it => {
373
437
  // return;
374
438
  if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
375
- const targets = this._domRender_config.eventManager.findAttrElements((it as DocumentFragment | Element), this._domRender_config);
376
- this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);
439
+ const targets = this._domRender_config.eventManager.findAttrElements(
440
+ it as DocumentFragment | Element,
441
+ this._domRender_config
442
+ );
443
+ this._domRender_config.eventManager.changeVar(
444
+ this._domRender_proxy,
445
+ targets,
446
+ `this.${fullPathStr}`,
447
+ this._domRender_config
448
+ );
377
449
  }
378
450
  });
379
451
 
380
452
  //랜더대상된게있으면
381
- if(rData?.length > 0 && isOnChildRenderedByProperty(data)) {
382
- const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data)
453
+ if (rData?.length > 0 && isOnChildRenderedByProperty(data)) {
454
+ const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data);
383
455
  data.onChildRenderedByProperty(lastPropertyName, propertyValue);
384
456
  // data
385
457
  }
@@ -388,7 +460,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
388
460
  // console.log('DonrenderProxy root RenderDone')
389
461
  });
390
462
  }
391
- fullPaths.push([{path:fullPathStr, obj: this._domRender_proxy}]);
463
+ fullPaths.push([{ path: fullPathStr, obj: this._domRender_proxy }]);
392
464
  }
393
465
 
394
466
  // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))
@@ -397,6 +469,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
397
469
 
398
470
  public set(target: T, p: string | symbol, value: any, receiver: T): boolean {
399
471
  // console.log('set------->', target, p, value, receiver, Date.now())
472
+ // console.log('set------->', p,value)
400
473
  // console.log('set------->', target, p, value, receiver, Date.now())
401
474
  // try {
402
475
  // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, target, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
@@ -431,75 +504,116 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
431
504
  // (target as any)[p]?.obj?.onDrThisUnBind?.();
432
505
  // }
433
506
  // is ComponentSet
434
- if ((value instanceof ComponentSet) && ((target as any)[p] instanceof ComponentSet)) {
507
+ if (value instanceof ComponentSet && (target as any)[p] instanceof ComponentSet) {
435
508
  value.config.beforeComponentSet = (target as any)[p];
436
509
  }
437
510
  (target as any)[p] = value;
438
- let fullPathInfo: {path: string, obj:any}[][] = [];
511
+ let fullPathInfo: { path: string; obj: any }[][] = [];
439
512
  if (typeof p === 'string') {
440
- fullPathInfo = this.root([[{path:p, obj: this._domRender_proxy}]], value)
513
+ fullPathInfo = this.root([[{ path: p, obj: this._domRender_proxy }]], value);
441
514
  }
442
515
 
443
516
  // console.log('setRooot', fullPathInfo);
444
517
 
445
-
446
518
  //normal attribute 또한 링크랑 같은 증세라서 이렇게 해줘야한다!!
447
519
  // const rootDomRenderProxy = this.findRootDomRenderProxy();
448
520
  // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)
449
521
  // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)
450
522
  const rootElement = this._domRender_config.rootElement ?? this._domRender_config.window.document;
451
- DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(elementInfo => {
452
- // @ts-ignore
453
- // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);
454
- const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));
455
- Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {
456
- return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));
457
- }).forEach(it=> {
458
- const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);
459
- const value1 = ScriptUtils.evaluateReturn(optionalPath, it.pathInfo.obj);
460
- // console.log('proxy set!Attribut======', it.key, value1)
461
- if (value1 === null) {
462
- elementInfo.element.removeAttribute(it.key);
463
- elementInfo.element[it.key] = null;
464
- } else {
465
- elementInfo.element.setAttribute(it.key, value1);
466
- elementInfo.element[it.key] = value1
467
- }
468
- })
469
- })
523
+ DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(
524
+ elementInfo => {
525
+ // @ts-ignore
526
+ // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);
527
+ const targets = new Map<string, NormalAttrDataType>(
528
+ ObjectUtils.Script.evaluateReturn<[string, NormalAttrDataType][]>(elementInfo.value)
529
+ );
530
+ Array.from(targets.entries())
531
+ .filter(isDefined)
532
+ .flatMap(([key, valueScript]) => {
533
+ return fullPathInfo
534
+ .flat()
535
+ .filter(it => valueScript.variablePaths?.some(vit=> vit.inner.includes(`this.${it.path}`)))
536
+ .flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
537
+ })
538
+ .forEach(it => {
539
+ // const optionalPaths = it.valueScript.variablePaths.map(it => ObjectUtils.Path.toOptionalChainPath(it))
540
+ const variablePaths = it.valueScript.variablePaths;
541
+ let targetScript = it.valueScript.originalAttrValue;
542
+ variablePaths.forEach(it => {
543
+ let r = ObjectUtils.Path.toOptionalChainPath(it.inner);
544
+ targetScript = targetScript.replaceAll(it.origin,`\${${r}}`);
545
+ })
546
+ const value1 = ObjectUtils.Script.evaluateReturn('`'+targetScript+'`', it.pathInfo.obj);
547
+ // console.log('proxy set!Attribut======', it.key, value1)
548
+ if (value1 === null) {
549
+ elementInfo.element.removeAttribute(it.key);
550
+ elementInfo.element[it.key] = null;
551
+ } else {
552
+ elementInfo.element.setAttribute(it.key, value1);
553
+ elementInfo.element[it.key] = value1;
554
+ }
555
+ });
556
+ }
557
+ );
470
558
 
471
559
  //여기서 링크 같은거 해줘야함 *-link로 변수값이 변경되면 그걸 참고하고있는 다른것들에도 해줘야한다.
472
- DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(elementInfo => {
473
- // @ts-ignore
474
- const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));
475
-
476
- Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {
477
- return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));
478
- }).forEach(info=> {
479
- const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);
480
- const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);
481
- if (applyAttributeName) {
482
- if (value1 === null) {
483
- elementInfo.element.removeAttribute(applyAttributeName.property);
484
- } else {
485
- // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)
486
- elementInfo.element.setAttribute(applyAttributeName.property, value1);
487
- }
488
- }
489
- })
490
-
491
- Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {
492
- return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));
493
- }).forEach(info=> {
494
- const linkInfo = EventManager.linkAttrs.find(it=>it.name === info.key)
495
- if (linkInfo) {
496
- elementInfo.element[linkInfo.property] = value
497
- }
498
- })
499
- })
500
- if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)) {
501
- if(isOnBeforeReturnSet(receiver)){
502
- receiver.onBeforeReturnSet?.(p, value, fullPathInfo.map(it => it.map(it=>it.path).join()));
560
+ DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(
561
+ elementInfo => {
562
+ // @ts-ignore
563
+ const targets = new Map<string, string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));
564
+
565
+ Array.from(targets.entries())
566
+ .filter(([key, value]) => value.trim())
567
+ .filter(isDefined)
568
+ .flatMap(([key, valueScript]) => {
569
+ return fullPathInfo
570
+ .flat()
571
+ .filter(it => valueScript.includes(`this.${it.path}`))
572
+ .flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
573
+ })
574
+ .forEach(info => {
575
+ const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);
576
+ const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);
577
+ if (applyAttributeName) {
578
+ if (value1 === null) {
579
+ elementInfo.element.removeAttribute(applyAttributeName.property);
580
+ } else {
581
+ // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)
582
+ elementInfo.element.setAttribute(applyAttributeName.property, value1);
583
+ }
584
+ }
585
+ });
586
+
587
+ Array.from(targets.entries())
588
+ .filter(([key, value]) => value.trim())
589
+ .filter(isDefined)
590
+ .flatMap(([key, valueScript]) => {
591
+ return fullPathInfo
592
+ .flat()
593
+ .filter(it => valueScript.includes(`this.${it.path}`))
594
+ .flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
595
+ })
596
+ .forEach(info => {
597
+ const linkInfo = EventManager.linkAttrs.find(it => it.name === info.key);
598
+ if (linkInfo) {
599
+ elementInfo.element[linkInfo.property] = value;
600
+ }
601
+ });
602
+ }
603
+ );
604
+
605
+ // console.log('---end',receiver);
606
+ if (
607
+ 'onBeforeReturnSet' in receiver &&
608
+ typeof p === 'string' &&
609
+ !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)
610
+ ) {
611
+ if (isOnBeforeReturnSet(receiver)) {
612
+ receiver.onBeforeReturnSet?.(
613
+ p,
614
+ value,
615
+ fullPathInfo.map(it => it.map(it => it.path).join())
616
+ );
503
617
  }
504
618
  }
505
619
  return true;
@@ -511,9 +625,9 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
511
625
  return this._domRender_origin;
512
626
  } else if (p === '_DomRender_ref' || p === '_domRender_ref') {
513
627
  return this._domRender_ref;
514
- } else if (p === '_DomRender_config' || p ==='_domRender_config') {
628
+ } else if (p === '_DomRender_config' || p === '_domRender_config') {
515
629
  return this._domRender_config;
516
- } else if (p === '_DomRender_proxy' || p ==='_domRender_proxy') {
630
+ } else if (p === '_DomRender_proxy' || p === '_domRender_proxy') {
517
631
  return this;
518
632
  } else {
519
633
  // Date라던지 이런놈들은-_-프록시가 이상하게 동작해서
@@ -531,12 +645,25 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
531
645
  // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])
532
646
  // return (target as any)[p]
533
647
  let it = (target as any)[p];
534
- if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {
648
+ if (
649
+ it &&
650
+ typeof it === 'object' &&
651
+ '_DomRender_isProxy' in it &&
652
+ Object.prototype.toString.call(it._DomRender_origin) === '[object Date]'
653
+ ) {
535
654
  it = it._DomRender_origin;
536
655
  }
537
656
 
538
- if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)) {
539
- (receiver as any)?.onBeforeReturnGet?.(p, it, this.root([[{path:p, obj: this._domRender_proxy}]], it, false));
657
+ if (
658
+ 'onBeforeReturnGet' in receiver &&
659
+ typeof p === 'string' &&
660
+ !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)
661
+ ) {
662
+ (receiver as any)?.onBeforeReturnGet?.(
663
+ p,
664
+ it,
665
+ this.root([[{ path: p, obj: this._domRender_proxy }]], it, false)
666
+ );
540
667
  }
541
668
  return it;
542
669
  }
@@ -545,7 +672,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
545
672
  deleteProperty(target: T, p: string | symbol): boolean {
546
673
  delete (target as any)[p];
547
674
  if (typeof p === 'string') {
548
- this.root([[{path:p, obj: this._domRender_proxy}]]);
675
+ this.root([[{ path: p, obj: this._domRender_proxy }]]);
549
676
  }
550
677
  return true;
551
678
  }
@@ -555,24 +682,30 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
555
682
  }
556
683
 
557
684
  proxy(parentProxy: T, obj: T | any, p: string) {
558
-
559
-
560
685
  try {
561
686
  // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
562
687
  const isObject = typeof obj === 'object';
563
- const isNoProxy = isObject && isDomRenderNoProxy(obj,p)
564
- const isExclude = (this._domRender_config.proxyExcludeTyps?.some(it => obj instanceof it)) ?? false;
688
+ const isNoProxy = isObject && isDomRenderNoProxy(obj, p);
689
+ const isExclude = this._domRender_config.proxyExcludeTyps?.some(it => obj instanceof it) ?? false;
565
690
  const isFinal = isObject && DomRenderProxy.isFinal(obj);
566
691
  const isFrozen = Object.isFrozen(obj);
567
692
  const isShield = obj instanceof Shield;
568
- if (isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {
693
+ if (
694
+ obj === undefined ||
695
+ obj === null ||
696
+ isNoProxy ||
697
+ isExclude ||
698
+ ValidUtils.isNullOrUndefined(obj) ||
699
+ !isObject ||
700
+ isFinal ||
701
+ isFrozen ||
702
+ isShield
703
+ ) {
569
704
  return obj;
570
705
  }
571
- } catch (e) {
572
- }
573
-
706
+ } catch (e) {}
574
707
 
575
- /*
708
+ /*
576
709
  const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;
577
710
  if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
578
711
  const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);
@@ -589,7 +722,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
589
722
  return obj;
590
723
  }
591
724
  */
592
- if ( !isWrapProxyDomRenderProxy(obj)) {
725
+ if (!isWrapProxyDomRenderProxy(obj)) {
593
726
  const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);
594
727
  domRender.addRef(parentProxy, p);
595
728
  const proxy = new Proxy(obj, domRender);