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