@dooboostore/dom-render 1.0.110 โ†’ 1.0.112

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 (234) hide show
  1. package/README.MD +1 -2
  2. package/dist/cjs/DomRenderProxy.js +89 -48
  3. package/dist/cjs/DomRenderProxy.js.map +2 -2
  4. package/dist/cjs/components/ComponentBase.js +47 -1
  5. package/dist/cjs/components/ComponentBase.js.map +2 -2
  6. package/dist/cjs/components/a/A.js +22 -0
  7. package/dist/cjs/components/a/A.js.map +2 -2
  8. package/dist/cjs/components/appender/Appender.js +21 -4
  9. package/dist/cjs/components/appender/Appender.js.map +2 -2
  10. package/dist/cjs/components/details/Details.js +5 -0
  11. package/dist/cjs/components/details/Details.js.map +2 -2
  12. package/dist/cjs/components/forOf/ForOf.js +2 -2
  13. package/dist/cjs/components/forOf/ForOf.js.map +1 -1
  14. package/dist/cjs/components/if/If.js +1 -1
  15. package/dist/cjs/components/if/If.js.map +2 -2
  16. package/dist/cjs/components/index.js +3 -1
  17. package/dist/cjs/components/index.js.map +3 -3
  18. package/dist/cjs/components/router/RouterOutlet.js +41 -10
  19. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  20. package/dist/cjs/components/select/Select.js +39 -1
  21. package/dist/cjs/components/select/Select.js.map +2 -2
  22. package/dist/cjs/components/this/This.js +33 -5
  23. package/dist/cjs/components/this/This.js.map +2 -2
  24. package/dist/cjs/decorators/DomRenderNoProxy.js +3 -9
  25. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  26. package/dist/cjs/events/EventManager.js +103 -37
  27. package/dist/cjs/events/EventManager.js.map +2 -2
  28. package/dist/cjs/lifecycle/OnChangeAttrRender.js.map +1 -1
  29. package/dist/cjs/lifecycle/OnChildRawSetRendered.js +26 -0
  30. package/dist/cjs/lifecycle/OnChildRawSetRendered.js.map +7 -0
  31. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +2 -2
  32. package/dist/cjs/operators/Appender.js +8 -1
  33. package/dist/cjs/operators/Appender.js.map +2 -2
  34. package/dist/cjs/operators/Dr.js +2 -2
  35. package/dist/cjs/operators/Dr.js.map +2 -2
  36. package/dist/cjs/operators/DrAppender.js +2 -2
  37. package/dist/cjs/operators/DrAppender.js.map +2 -2
  38. package/dist/cjs/operators/DrFor.js +2 -2
  39. package/dist/cjs/operators/DrFor.js.map +2 -2
  40. package/dist/cjs/operators/DrForOf.js +34 -6
  41. package/dist/cjs/operators/DrForOf.js.map +2 -2
  42. package/dist/cjs/operators/DrForm.js +6 -6
  43. package/dist/cjs/operators/DrForm.js.map +2 -2
  44. package/dist/cjs/operators/DrInnerHTML.js +2 -2
  45. package/dist/cjs/operators/DrInnerHTML.js.map +2 -2
  46. package/dist/cjs/operators/DrRepeat.js +2 -2
  47. package/dist/cjs/operators/DrRepeat.js.map +2 -2
  48. package/dist/cjs/operators/DrStripElement.js +2 -2
  49. package/dist/cjs/operators/DrStripElement.js.map +2 -2
  50. package/dist/cjs/operators/DrTargetElement.js +14 -5
  51. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  52. package/dist/cjs/operators/DrTargetElementIsElement.js +2 -2
  53. package/dist/cjs/operators/DrTargetElementIsElement.js.map +2 -2
  54. package/dist/cjs/operators/DrThis.js +2 -2
  55. package/dist/cjs/operators/DrThis.js.map +2 -2
  56. package/dist/cjs/operators/DrThisProperty.js +2 -1
  57. package/dist/cjs/operators/DrThisProperty.js.map +2 -2
  58. package/dist/cjs/rawsets/RawSet.js +87 -160
  59. package/dist/cjs/rawsets/RawSet.js.map +2 -2
  60. package/dist/cjs/routers/HashRouter.js +3 -0
  61. package/dist/cjs/routers/HashRouter.js.map +2 -2
  62. package/dist/cjs/routers/PathRouter.js +3 -0
  63. package/dist/cjs/routers/PathRouter.js.map +2 -2
  64. package/dist/cjs/routers/Router.js +25 -21
  65. package/dist/cjs/routers/Router.js.map +2 -2
  66. package/dist/esm/DomRenderProxy.js +89 -48
  67. package/dist/esm/DomRenderProxy.js.map +2 -2
  68. package/dist/esm/components/ComponentBase.js +47 -1
  69. package/dist/esm/components/ComponentBase.js.map +2 -2
  70. package/dist/esm/components/a/A.js +22 -0
  71. package/dist/esm/components/a/A.js.map +2 -2
  72. package/dist/esm/components/appender/Appender.js +22 -5
  73. package/dist/esm/components/appender/Appender.js.map +2 -2
  74. package/dist/esm/components/details/Details.js +5 -0
  75. package/dist/esm/components/details/Details.js.map +2 -2
  76. package/dist/esm/components/forOf/ForOf.js +2 -2
  77. package/dist/esm/components/forOf/ForOf.js.map +1 -1
  78. package/dist/esm/components/if/If.js +1 -1
  79. package/dist/esm/components/if/If.js.map +2 -2
  80. package/dist/esm/components/index.js +3 -1
  81. package/dist/esm/components/index.js.map +2 -2
  82. package/dist/esm/components/router/RouterOutlet.js +41 -10
  83. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  84. package/dist/esm/components/select/Select.js +39 -1
  85. package/dist/esm/components/select/Select.js.map +2 -2
  86. package/dist/esm/components/this/This.js +33 -5
  87. package/dist/esm/components/this/This.js.map +2 -2
  88. package/dist/esm/decorators/DomRenderNoProxy.js +3 -9
  89. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  90. package/dist/esm/events/EventManager.js +103 -37
  91. package/dist/esm/events/EventManager.js.map +2 -2
  92. package/dist/esm/lifecycle/OnChangeAttrRender.js.map +1 -1
  93. package/dist/esm/lifecycle/OnChildRawSetRendered.js +7 -0
  94. package/dist/esm/lifecycle/OnChildRawSetRendered.js.map +7 -0
  95. package/dist/esm/lifecycle/OnRawSetRendered.js.map +2 -2
  96. package/dist/esm/operators/Appender.js +8 -1
  97. package/dist/esm/operators/Appender.js.map +2 -2
  98. package/dist/esm/operators/Dr.js +2 -2
  99. package/dist/esm/operators/Dr.js.map +2 -2
  100. package/dist/esm/operators/DrAppender.js +2 -2
  101. package/dist/esm/operators/DrAppender.js.map +2 -2
  102. package/dist/esm/operators/DrFor.js +2 -2
  103. package/dist/esm/operators/DrFor.js.map +2 -2
  104. package/dist/esm/operators/DrForOf.js +34 -6
  105. package/dist/esm/operators/DrForOf.js.map +2 -2
  106. package/dist/esm/operators/DrForm.js +6 -6
  107. package/dist/esm/operators/DrForm.js.map +2 -2
  108. package/dist/esm/operators/DrInnerHTML.js +2 -2
  109. package/dist/esm/operators/DrInnerHTML.js.map +2 -2
  110. package/dist/esm/operators/DrRepeat.js +2 -2
  111. package/dist/esm/operators/DrRepeat.js.map +2 -2
  112. package/dist/esm/operators/DrStripElement.js +2 -2
  113. package/dist/esm/operators/DrStripElement.js.map +2 -2
  114. package/dist/esm/operators/DrTargetElement.js +14 -5
  115. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  116. package/dist/esm/operators/DrTargetElementIsElement.js +2 -2
  117. package/dist/esm/operators/DrTargetElementIsElement.js.map +2 -2
  118. package/dist/esm/operators/DrThis.js +2 -2
  119. package/dist/esm/operators/DrThis.js.map +2 -2
  120. package/dist/esm/operators/DrThisProperty.js +2 -1
  121. package/dist/esm/operators/DrThisProperty.js.map +2 -2
  122. package/dist/esm/rawsets/RawSet.js +87 -160
  123. package/dist/esm/rawsets/RawSet.js.map +2 -2
  124. package/dist/esm/routers/HashRouter.js +3 -0
  125. package/dist/esm/routers/HashRouter.js.map +2 -2
  126. package/dist/esm/routers/PathRouter.js +3 -0
  127. package/dist/esm/routers/PathRouter.js.map +2 -2
  128. package/dist/esm/routers/Router.js +25 -21
  129. package/dist/esm/routers/Router.js.map +2 -2
  130. package/dist/esm-bundle/dooboostore-dom-render.esm.js +830 -1533
  131. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  132. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  133. package/dist/types/components/ComponentBase.d.ts +12 -1
  134. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  135. package/dist/types/components/a/A.d.ts +6 -0
  136. package/dist/types/components/a/A.d.ts.map +1 -1
  137. package/dist/types/components/appender/Appender.d.ts +1 -0
  138. package/dist/types/components/appender/Appender.d.ts.map +1 -1
  139. package/dist/types/components/details/Details.d.ts +2 -0
  140. package/dist/types/components/details/Details.d.ts.map +1 -1
  141. package/dist/types/components/forOf/ForOf.d.ts +1 -1
  142. package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
  143. package/dist/types/components/if/If.d.ts.map +1 -1
  144. package/dist/types/components/index.d.ts +1 -0
  145. package/dist/types/components/index.d.ts.map +1 -1
  146. package/dist/types/components/router/RouterOutlet.d.ts +6 -3
  147. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  148. package/dist/types/components/select/Select.d.ts +5 -3
  149. package/dist/types/components/select/Select.d.ts.map +1 -1
  150. package/dist/types/components/this/This.d.ts +5 -1
  151. package/dist/types/components/this/This.d.ts.map +1 -1
  152. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  153. package/dist/types/events/EventManager.d.ts +1 -0
  154. package/dist/types/events/EventManager.d.ts.map +1 -1
  155. package/dist/types/lifecycle/OnChangeAttrRender.d.ts +1 -1
  156. package/dist/types/lifecycle/OnChangeAttrRender.d.ts.map +1 -1
  157. package/dist/types/lifecycle/OnChildRawSetRendered.d.ts +9 -0
  158. package/dist/types/lifecycle/OnChildRawSetRendered.d.ts.map +1 -0
  159. package/dist/types/lifecycle/OnRawSetRendered.d.ts +2 -0
  160. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -1
  161. package/dist/types/operators/Appender.d.ts +1 -0
  162. package/dist/types/operators/Appender.d.ts.map +1 -1
  163. package/dist/types/operators/Dr.d.ts.map +1 -1
  164. package/dist/types/operators/DrAppender.d.ts.map +1 -1
  165. package/dist/types/operators/DrFor.d.ts.map +1 -1
  166. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  167. package/dist/types/operators/DrForm.d.ts.map +1 -1
  168. package/dist/types/operators/DrInnerHTML.d.ts.map +1 -1
  169. package/dist/types/operators/DrRepeat.d.ts.map +1 -1
  170. package/dist/types/operators/DrStripElement.d.ts.map +1 -1
  171. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  172. package/dist/types/operators/DrThisProperty.d.ts.map +1 -1
  173. package/dist/types/rawsets/RawSet.d.ts +4 -1
  174. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  175. package/dist/types/routers/HashRouter.d.ts +1 -0
  176. package/dist/types/routers/HashRouter.d.ts.map +1 -1
  177. package/dist/types/routers/PathRouter.d.ts +1 -0
  178. package/dist/types/routers/PathRouter.d.ts.map +1 -1
  179. package/dist/types/routers/Router.d.ts +3 -0
  180. package/dist/types/routers/Router.d.ts.map +1 -1
  181. package/dist/umd-bundle/dooboostore-dom-render.umd.js +830 -1533
  182. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  183. package/package.json +4 -4
  184. package/src/DomRenderProxy.ts +169 -75
  185. package/src/DomRenderProxy.ts_cache_back +1031 -0
  186. package/src/components/ComponentBase.ts +61 -5
  187. package/src/components/a/A.ts +25 -0
  188. package/src/components/appender/Appender.ts +3 -3
  189. package/src/components/details/Details.ts +7 -0
  190. package/src/components/forOf/ForOf.ts +2 -2
  191. package/src/components/if/If.ts +3 -2
  192. package/src/components/index.ts +3 -0
  193. package/src/components/router/RouterOutlet.ts +60 -22
  194. package/src/components/select/Select.ts +69 -30
  195. package/src/components/this/This.ts +41 -6
  196. package/src/decorators/DomRenderNoProxy.ts +17 -14
  197. package/src/events/EventManager.ts +180 -77
  198. package/src/lifecycle/OnChangeAttrRender.ts +1 -1
  199. package/src/lifecycle/OnChildRawSetRendered.ts +13 -0
  200. package/src/lifecycle/OnRawSetRendered.ts +3 -1
  201. package/src/operators/Appender.ts +8 -1
  202. package/src/operators/Dr.ts +2 -1
  203. package/src/operators/DrAppender.ts +2 -1
  204. package/src/operators/DrFor.ts +2 -1
  205. package/src/operators/DrForOf.ts +36 -6
  206. package/src/operators/DrForm.ts +6 -5
  207. package/src/operators/DrInnerHTML.ts +2 -1
  208. package/src/operators/DrRepeat.ts +2 -1
  209. package/src/operators/DrStripElement.ts +2 -1
  210. package/src/operators/DrTargetElement.ts +17 -5
  211. package/src/operators/DrTargetElementIsElement.ts +2 -2
  212. package/src/operators/DrThis.ts +2 -2
  213. package/src/operators/DrThisProperty.ts +2 -1
  214. package/src/rawsets/RawSet.ts +161 -237
  215. package/src/routers/HashRouter.ts +4 -0
  216. package/src/routers/PathRouter.ts +5 -0
  217. package/src/routers/Router.ts +64 -47
  218. package/src/node_modules/.bin/acorn +0 -17
  219. package/src/node_modules/.bin/browserslist +0 -17
  220. package/src/node_modules/.bin/eslint +0 -17
  221. package/src/node_modules/.bin/sbf +0 -17
  222. package/src/node_modules/.bin/ts-node +0 -17
  223. package/src/node_modules/.bin/ts-node-cwd +0 -17
  224. package/src/node_modules/.bin/ts-node-dev +0 -17
  225. package/src/node_modules/.bin/ts-node-esm +0 -17
  226. package/src/node_modules/.bin/ts-node-script +0 -17
  227. package/src/node_modules/.bin/ts-node-transpile-only +0 -17
  228. package/src/node_modules/.bin/ts-script +0 -17
  229. package/src/node_modules/.bin/tsc +0 -17
  230. package/src/node_modules/.bin/tsnd +0 -17
  231. package/src/node_modules/.bin/tsserver +0 -17
  232. package/src/node_modules/.bin/webpack +0 -17
  233. package/src/node_modules/.bin/webpack-cli +0 -17
  234. package/src/node_modules/.bin/webpack-dev-server +0 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dooboostore/dom-render",
3
- "version": "1.0.110",
3
+ "version": "1.0.112",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -90,9 +90,9 @@
90
90
  "typescript": "^5.9.2",
91
91
  "esbuild-plugin-tsc": "^0.5.0",
92
92
  "esbuild": "^0.23.0",
93
- "@dooboostore/core": "1.0.26",
94
- "@dooboostore/core-web": "1.0.8",
95
- "@dooboostore/core-node": "1.0.9"
93
+ "@dooboostore/core": "1.0.28",
94
+ "@dooboostore/core-node": "1.0.10",
95
+ "@dooboostore/core-web": "1.0.9"
96
96
  },
97
97
  "scripts": {
98
98
  "clean": "rm -rf dist",
@@ -20,6 +20,7 @@ import { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';
20
20
  import { ValidUtils } from '@dooboostore/core/valid/ValidUtils';
21
21
  import { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';
22
22
  import { isOnRawSetRendered } from './lifecycle/OnRawSetRendered';
23
+ import { isOnChildRawSetRendered } from "./lifecycle/OnChildRawSetRendered";
23
24
 
24
25
  const excludeGetSetPropertys = [
25
26
  'onBeforeReturnGet',
@@ -62,8 +63,8 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
62
63
  public _domRender_ref = new Map<object, Set<string>>();
63
64
  public _rawSets = new Map<string, Set<RawSet>>();
64
65
  public _domRender_proxy?: T;
65
- // public _firstTarget: Node;
66
66
  public _targets = new Set<Node>();
67
+ // public name = Math.random();
67
68
 
68
69
  constructor(
69
70
  public _domRender_origin: T,
@@ -112,7 +113,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
112
113
  if (isNoProxy) {
113
114
  return obj;
114
115
  }
115
- } catch (e) {}
116
+ } catch (e) { }
116
117
  const target = obj[it];
117
118
  if (
118
119
  target !== undefined &&
@@ -195,7 +196,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
195
196
  const onInit = (target as any).getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);
196
197
  let initParam: any;
197
198
  if (onCreate) {
198
- initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);
199
+ initParam = ObjectUtils.Script.evaluateReturn(onCreate, this._domRender_proxy);
199
200
  }
200
201
  if (isOnInitRender(this._domRender_proxy)) {
201
202
  await this._domRender_proxy.onInitRender(
@@ -226,70 +227,99 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
226
227
  }
227
228
  const removeRawSets: RawSet[] = [];
228
229
  const rawSets = raws ?? this.getRawSets();
230
+ // console.log('Total RawSets to render:', Array.isArray(rawSets) ? rawSets.length : 0);
229
231
 
230
232
  // console.log('----', rawSets);
231
- for (const it of rawSets as RawSet[]) {
232
- it.getUsingTriggerVariables(this._domRender_config).forEach(path => {
233
- // console.log('getUsingTriggerVariables->', path);
234
- this.addRawSet(path, it);
235
- });
233
+ // console.log('----', rawSets);
234
+ const CHUNK_SIZE = 50;
235
+ const chunks = [];
236
+ const rawSetsArray = Array.from(rawSets as RawSet[]);
237
+ for (let i = 0; i < rawSetsArray.length; i += CHUNK_SIZE) {
238
+ chunks.push(rawSetsArray.slice(i, i + CHUNK_SIZE));
239
+ }
236
240
 
237
- let renderResult: RenderResult | undefined;
238
- if (it.isConnected) {
239
- // ์ค‘์š” render๋ ๋•Œ targetAttribute ์ฒดํฌ ํ•ด์•ผํ•จ.
240
- const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);
241
- // console.log('sssssssssSSS?',it, targetAttrMap)
242
- // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());
243
- if (it.detect?.action) {
244
- it.detect.action();
245
- // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {
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) => {
253
- // it?.data.onChangeAttrRender(k, null, v);
254
- // console.log('------->?',v,k);
255
- const isUsing = v.variablePaths.some(it => EventManager.isUsingThisVar(it.inner, `this.${fullPathStr}`))
256
- // console.log('------->?',v,k, isUsing);
257
- if (isUsing) {
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 ??= {};
263
- it.dataSet.render.attribute = targetAttrObject;
264
- // const render = it.dataSet?.render;
265
- // console.log('render-->!!!!!', it.dataSet.render);
266
- // const script = `${render.renderScript} return ${v} `;
267
- // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));
268
- if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {
269
- it.dataSet?.render?.currentThis?.onChangeAttrRender?.(k, targetAttrObject[k], { rawSet: it });
241
+ for (const chunk of chunks) {
242
+ const promises = chunk.map(async (it) => {
243
+ it.getUsingTriggerVariables(this._domRender_config).forEach(path => {
244
+ // console.log('getUsingTriggerVariables->', path);
245
+ this.addRawSet(path, it);
246
+ });
247
+
248
+ let renderResult: RenderResult | undefined;
249
+ if (it.isConnected) {
250
+ // ์ค‘์š” render๋ ๋•Œ targetAttribute ์ฒดํฌ ํ•ด์•ผํ•จ.
251
+ const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);
252
+ // console.log('sssssssssSSS?',it, targetAttrMap)
253
+ // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());
254
+ if (it.detect?.action) {
255
+ it.detect.action();
256
+ // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {
257
+ } else if (
258
+ it.type === RawSetType.TARGET_ELEMENT &&
259
+ it.dataSet?.render?.currentThis &&
260
+ fullPathStr &&
261
+ targetAttrMap
262
+ ) {
263
+ const attrStart = performance.now();
264
+ new Map<string, NormalAttrDataType>(JSON.parse(targetAttrMap)).forEach((v, k) => {
265
+ // it?.data.onChangeAttrRender(k, null, v);
266
+ // console.log('------->?',v,k);
267
+ const isUsing = v.variablePaths.some(it => EventManager.isUsingThisVar(it.inner, `this.${fullPathStr}`))
268
+ // console.log('------->?',v,k, isUsing);
269
+ if (isUsing) {
270
+ const targetAttrObject = RawSet.getAttributeObject(it.point.node as Element, {
271
+ script: it.dataSet?.render?.renderScript ?? '',
272
+ obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render })
273
+ });
274
+ it.dataSet.render ??= {};
275
+ it.dataSet.render.attribute = targetAttrObject;
276
+ // const render = it.dataSet?.render;
277
+ // console.log('render-->!!!!!', it.dataSet.render);
278
+ // const script = `${render.renderScript} return ${v} `;
279
+ // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));
280
+ if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {
281
+ it.dataSet?.render?.currentThis?.onChangeAttrRender?.(k, targetAttrObject[k], { rawSet: it });
282
+ }
270
283
  }
284
+ // console.log('---?', v, fullPathStr, isUsing);
285
+ });
286
+ const attrEnd = performance.now();
287
+ // if (attrEnd - attrStart > 10) {
288
+ // console.log('Slow Attr Update:', attrEnd - attrStart, it);
289
+ // }
290
+ // ------------------->
291
+ } else {
292
+ const renderStart = performance.now();
293
+ const rawSets = await it.render(this._domRender_proxy, this._domRender_config);
294
+ const renderEnd = performance.now();
295
+ // if (renderEnd - renderStart > 10) {
296
+ // console.log('Slow RawSet Render:', renderEnd - renderStart, it);
297
+ // }
298
+ renderResult = rawSets;
299
+ // ๊ทธ์™ธ ์ž์‹๋“ค render
300
+ if (rawSets && rawSets.raws.length > 0) {
301
+ await this.render(rawSets.raws);
271
302
  }
272
- // console.log('---?', v, fullPathStr, isUsing);
273
- });
274
- // ------------------->
275
- } else {
276
- const rawSets = await it.render(this._domRender_proxy, this._domRender_config);
277
- renderResult = rawSets;
278
- // ๊ทธ์™ธ ์ž์‹๋“ค render
279
- if (rawSets && rawSets.raws.length > 0) {
280
- await this.render(rawSets.raws);
281
303
  }
304
+ } else {
305
+ removeRawSets.push(it);
282
306
  }
283
- } else {
284
- removeRawSets.push(it);
285
- }
286
307
 
287
- const t = it.findNearThis(this._domRender_proxy);
288
- // TODO: ํ˜ธ์ถœ๋œ๊ณณ์—์„œ ๋˜ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ๋˜๋ฉด ๋ฌดํ•œ๋ฃจํ”„๋‹ˆ๊น ์™ ๋งŒํ•˜๋ฉด ์‚ฌ์šฉ๋ชปํ•˜๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.
289
- if (isOnRawSetRendered(t)) {
290
- await t.onRawSetRendered(it, { path: fullPathStr, renderResult });
308
+ const t = it.findNearThis(this._domRender_proxy);
309
+ // TODO: ํ˜ธ์ถœ๋œ๊ณณ์—์„œ ๋˜ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ๋˜๋ฉด ๋ฌดํ•œ๋ฃจํ”„๋‹ˆ๊น ์™ ๋งŒํ•˜๋ฉด ์‚ฌ์šฉ๋ชปํ•˜๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.
310
+ if (isOnRawSetRendered(t)) {
311
+ await t.onRawSetRendered(it, { path: fullPathStr, value: ObjectUtils.Script.evaluateReturn(`this.${fullPathStr}`, this._domRender_proxy), root: this._domRender_proxy, renderResult });
312
+ }
313
+ // console.log('----', it);
314
+ });
315
+ await Promise.all(promises);
316
+ if (chunks.length > 1) {
317
+ await new Promise(resolve => requestAnimationFrame(resolve));
291
318
  }
292
- // console.log('----', it);
319
+ }
320
+
321
+ if (isOnChildRawSetRendered(this._domRender_proxy)) {
322
+ await this._domRender_proxy.onChildRawSetRendered();
293
323
  }
294
324
 
295
325
  if (removeRawSets.length > 0) {
@@ -312,19 +342,26 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
312
342
  value?: any,
313
343
  lastDoneExecute = true
314
344
  ): { path: string; obj: any }[][] {
315
- // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);
345
+ // console.time('root_total');
346
+ const rootStartTime = Date.now();
347
+ const pathKey = pathInfos.flat().map(i => i.path).join('.');
348
+
349
+ // console.group(`๐ŸŒณ DomRenderProxy root: ${pathKey}`);
350
+ // console.log('root--->', pathInfos, value, this._domRender_ref, this._domRender_origin);
316
351
  const fullPaths: { path: string; obj: any }[][] = [];
317
352
  if (this._domRender_ref.size > 0) {
318
353
  this._domRender_ref.forEach((it, key) => {
319
354
  if ('_DomRender_isProxy' in key) {
320
355
  it.forEach(sit => {
321
356
  try {
357
+ const recursiveStartTime = Date.now();
322
358
  const concat = pathInfos.concat([[{ path: sit, obj: key }]]);
323
359
  const items: { path: string; obj: any }[][] = (key as any)._DomRender_proxy?.root(
324
360
  concat,
325
361
  value,
326
362
  lastDoneExecute
327
363
  );
364
+ // console.log(`๐Ÿ”„ Recursive root call for ${sit}: ${Date.now() - recursiveStartTime}ms`);
328
365
 
329
366
  fullPaths.push(items.flat());
330
367
  // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});
@@ -338,6 +375,8 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
338
375
  }
339
376
  });
340
377
  } else {
378
+ // console.time('root_recursive');
379
+ const pathProcessStartTime = Date.now();
341
380
  // const firstPathStr = paths.slice(1).reverse().join('.');
342
381
  const strings = pathInfos.reverse().map(it => it.map(it => it.path).join(','));
343
382
  // array๊ฐ™์€๊ฒฝ์šฐ๋„ ํ‚ค๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ๋•Œ๋ฌธ์— ํŠน์ • ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๊ทธ๋ถ€๋ถ„๋งŒ ๋ฐ”๊ฟ”์ค„์ˆ˜ ์žˆ๋‹ค.
@@ -345,7 +384,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
345
384
  .map(it => (isNaN(Number(it)) ? '.' + it : `[${it}]`))
346
385
  .join('')
347
386
  .slice(1);
348
- // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);
387
+ // console.log(`๐Ÿ›ค๏ธ Path processing time: ${Date.now() - pathProcessStartTime}ms for path: ${fullPathStr}`);
349
388
  if (lastDoneExecute) {
350
389
  // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);
351
390
  // console.log('-------', firstPathStr, firstData);
@@ -359,15 +398,20 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
359
398
  .join('');
360
399
  const lastPropertyName = strings[strings.length - 1];
361
400
  const path = 'this' + front;
362
- const data = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);
401
+ const data = ObjectUtils.Script.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);
363
402
  // console.log('root-->', this._rawSets, path, data );
364
403
  // console.log('--!!!!', fullPathStr, iterable, data, front, last);
365
404
  // ์™œ์—ฌ๊ธฐ์„œ promise๋ฅผ ํ–ˆ์„๊นŒ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด......ํ›”.. ๋ณ€์ˆ˜๋ณ€๊ฒฝ๊ณผ ํ™”๋ฉด ๋ฟŒ๋ ค์ฃผ๋Š”๊ฑธ ๋™๊ธฐ๋กœํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์•ˆ๋‚˜์˜ค๊ณ  ๋น„ํ˜„์‹ค์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ promise
405
+ const promiseStartTime = Date.now();
406
+ // console.timeEnd('root_recursive');
407
+ // console.time('root_render_wait');
366
408
  new Promise<RawSet[]>(async resolve => {
409
+ const promiseInnerStartTime = Date.now();
367
410
  let rData: RawSet[] = [];
368
411
  const firstPathStr = front.slice(1);
369
412
 
370
413
  // check dictionary
414
+ const dictionaryCheckStartTime = Date.now();
371
415
  // console.log('-promise-------', firstPathStr, this)
372
416
  const firstTargets = this._rawSets.get(firstPathStr);
373
417
  const firstTargetDictionary: RawSet[] = [];
@@ -378,6 +422,8 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
378
422
  firstTargetDictionary.push(it);
379
423
  }
380
424
  });
425
+ // console.log(`๐Ÿ“š Dictionary check time: ${Date.now() - dictionaryCheckStartTime}ms (${firstTargetDictionary.length} found)`);
426
+
381
427
  if (firstTargetDictionary.length > 0) {
382
428
  // console.log('ddddddddddd', firstTargetDictionary);
383
429
  const rawSets: RawSet[] = [];
@@ -413,6 +459,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
413
459
  }
414
460
  }
415
461
 
462
+ const renderStartTime = Date.now();
416
463
  if (lastPropertyName === 'length' && Array.isArray(data)) {
417
464
  const aIterable = this._rawSets.get(firstPathStr);
418
465
  if (aIterable) {
@@ -422,6 +469,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
422
469
  // console.log('------------',iterable, fullPaths)
423
470
  rData = await this.render(Array.from(iterable), fullPathStr);
424
471
  }
472
+ // console.log(`๐ŸŽจ Render time: ${Date.now() - renderStartTime}ms (${rData?.length || 0} rawSets)`);
425
473
 
426
474
  // console.log('-----------', this, lastPropertyName );
427
475
  // this._targets.forEach(it => {
@@ -432,38 +480,52 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
432
480
  // }
433
481
  // });
434
482
 
483
+ const eventProcessStartTime = Date.now();
435
484
  const Node = ((this._domRender_config.window as any).Node)
436
485
  this._targets.forEach(it => {
437
486
  // return;
438
487
  if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
488
+ const findAttrStartTime = Date.now();
439
489
  const targets = this._domRender_config.eventManager.findAttrElements(
440
490
  it as DocumentFragment | Element,
441
491
  this._domRender_config
442
492
  );
493
+ const targetCount = (targets as any)?.size || (targets as any)?.length || 0;
494
+ // console.log(`๐Ÿ” findAttrElements time: ${Date.now() - findAttrStartTime}ms (${targetCount} elements)`, it);
495
+
496
+ const changeVarStartTime = Date.now();
443
497
  this._domRender_config.eventManager.changeVar(
444
498
  this._domRender_proxy,
445
499
  targets,
446
500
  `this.${fullPathStr}`,
447
501
  this._domRender_config
448
502
  );
503
+ // console.log(`๐Ÿ”„ changeVar time: ${Date.now() - changeVarStartTime}ms`);
449
504
  }
450
505
  });
506
+ // console.log(`โšก Event processing time: ${Date.now() - eventProcessStartTime}ms (${this._targets.size} targets)`);
507
+
508
+ // console.log(`๐Ÿ”„ Promise inner total time: ${Date.now() - promiseInnerStartTime}ms`);
451
509
 
452
510
  //๋žœ๋”๋Œ€์ƒ๋œ๊ฒŒ์žˆ์œผ๋ฉด
453
511
  if (rData?.length > 0 && isOnChildRenderedByProperty(data)) {
454
- const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data);
512
+ const propertyValue = ObjectUtils.Script.evaluateReturn(`this.${lastPropertyName}`, data);
455
513
  data.onChildRenderedByProperty(lastPropertyName, propertyValue);
456
514
  // data
457
515
  }
458
516
  resolve(rData);
459
517
  }).then(it => {
460
518
  // console.log('DonrenderProxy root RenderDone')
519
+ // console.timeEnd('root_render_wait');
520
+ // console.timeEnd('root_total');
461
521
  });
462
522
  }
463
523
  fullPaths.push([{ path: fullPathStr, obj: this._domRender_proxy }]);
464
524
  }
465
525
 
466
- // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))
526
+ // console.log(`๐Ÿ Root method total time: ${Date.now() - rootStartTime}ms`);
527
+ // console.log('dddddd', fullPaths.flatMap(it => it).map(it => it.path))
528
+ // console.groupEnd();
467
529
  return fullPaths;
468
530
  }
469
531
 
@@ -494,15 +556,19 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
494
556
  // return true;
495
557
  // }
496
558
  // console.log('set--?', p, target, value);
497
-
559
+ let start = performance.now()
498
560
  if (typeof p === 'string') {
499
561
  value = this.proxy(receiver, value, p);
500
562
  }
563
+ // console.log('set proxy time', performance.now() - start, p);
564
+ // start = performance.now();
565
+
501
566
 
502
567
  // console.log('set typeChecked', (target as any)[p] instanceof ComponentSet, value instanceof ComponentSet);
503
568
  // if ((target as any)[p] instanceof ComponentSet) {
504
569
  // (target as any)[p]?.obj?.onDrThisUnBind?.();
505
570
  // }
571
+ // console.log('---', this._domRender_ref, p, this._domRender_proxy)
506
572
  // is ComponentSet
507
573
  if (value instanceof ComponentSet && (target as any)[p] instanceof ComponentSet) {
508
574
  value.config.beforeComponentSet = (target as any)[p];
@@ -513,6 +579,10 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
513
579
  fullPathInfo = this.root([[{ path: p, obj: this._domRender_proxy }]], value);
514
580
  }
515
581
 
582
+
583
+ // console.log('set proxy root time', performance.now() - start, p);
584
+ // start = performance.now();
585
+ //
516
586
  // console.log('setRooot', fullPathInfo);
517
587
 
518
588
  //normal attribute ๋˜ํ•œ ๋งํฌ๋ž‘ ๊ฐ™์€ ์ฆ์„ธ๋ผ์„œ ์ด๋ ‡๊ฒŒ ํ•ด์ค˜์•ผํ•œ๋‹ค!!
@@ -532,22 +602,36 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
532
602
  .flatMap(([key, valueScript]) => {
533
603
  return fullPathInfo
534
604
  .flat()
535
- .filter(it => valueScript.variablePaths?.some(vit=> vit.inner.includes(`this.${it.path}`)))
605
+ .filter(it => valueScript.variablePaths?.some(vit => vit.inner.includes(`this.${it.path}`)))
536
606
  .flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
537
607
  })
538
608
  .forEach(it => {
539
609
  // const optionalPaths = it.valueScript.variablePaths.map(it => ObjectUtils.Path.toOptionalChainPath(it))
540
610
  const variablePaths = it.valueScript.variablePaths;
541
611
  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);
612
+ let script: string;
613
+ if (it.valueScript.isStringTemplate) {
614
+ variablePaths.forEach(it => {
615
+ let r = ObjectUtils.Path.toOptionalChainPath(it.inner);
616
+ targetScript = targetScript.replaceAll(it.origin, `\${${r}}`);
617
+ })
618
+ script = '`' + targetScript + '`';
619
+ } else {
620
+ variablePaths.forEach(it => {
621
+ let r = ObjectUtils.Path.toOptionalChainPath(it.inner);
622
+ targetScript = targetScript.replaceAll(it.origin, `${r}`);
623
+ })
624
+ script = targetScript;
625
+ }
626
+ // variablePaths.forEach(it => {
627
+ // let r = ObjectUtils.Path.toOptionalChainPath(it.inner);
628
+ // targetScript = targetScript.replaceAll(it.origin,`\${${r}}`);
629
+ // })
630
+ const value1 = ObjectUtils.Script.evaluateReturn(script, it.pathInfo.obj);
547
631
  // console.log('proxy set!Attribut======', it.key, value1)
548
- if (value1 === null) {
632
+ if (value1 === null || value1 === undefined) {
549
633
  elementInfo.element.removeAttribute(it.key);
550
- elementInfo.element[it.key] = null;
634
+ // elementInfo.element[it.key] = null;
551
635
  } else {
552
636
  elementInfo.element.setAttribute(it.key, value1);
553
637
  elementInfo.element[it.key] = value1;
@@ -556,11 +640,16 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
556
640
  }
557
641
  );
558
642
 
643
+ // console.log('set proxy normalAttrMapAttrName time', performance.now() - start, p);
644
+ // start = performance.now();
645
+
646
+
647
+
559
648
  //์—ฌ๊ธฐ์„œ ๋งํฌ ๊ฐ™์€๊ฑฐ ํ•ด์ค˜์•ผํ•จ *-link๋กœ ๋ณ€์ˆ˜๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ทธ๊ฑธ ์ฐธ๊ณ ํ•˜๊ณ ์žˆ๋Š” ๋‹ค๋ฅธ๊ฒƒ๋“ค์—๋„ ํ•ด์ค˜์•ผํ•œ๋‹ค.
560
649
  DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(
561
650
  elementInfo => {
562
651
  // @ts-ignore
563
- const targets = new Map<string, string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));
652
+ const targets = new Map<string, string>(ObjectUtils.Script.evaluateReturn<[string, string][]>(elementInfo.value));
564
653
 
565
654
  Array.from(targets.entries())
566
655
  .filter(([key, value]) => value.trim())
@@ -572,7 +661,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
572
661
  .flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
573
662
  })
574
663
  .forEach(info => {
575
- const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);
664
+ const value1 = ObjectUtils.Script.evaluateReturn(info.valueScript, info.pathInfo.obj);
576
665
  const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);
577
666
  if (applyAttributeName) {
578
667
  if (value1 === null) {
@@ -602,6 +691,9 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
602
691
  }
603
692
  );
604
693
 
694
+ // console.log('set proxy linkTargetMapAttrName time', performance.now() - start, p);
695
+ // start = performance.now();
696
+
605
697
  // console.log('---end',receiver);
606
698
  if (
607
699
  'onBeforeReturnSet' in receiver &&
@@ -616,6 +708,8 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
616
708
  );
617
709
  }
618
710
  }
711
+
712
+ // console.log('done!!')
619
713
  return true;
620
714
  }
621
715
 
@@ -703,7 +797,7 @@ export class DomRenderProxy<T extends object> implements ProxyHandler<T> {
703
797
  ) {
704
798
  return obj;
705
799
  }
706
- } catch (e) {}
800
+ } catch (e) { }
707
801
 
708
802
  /*
709
803
  const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;