@dooboostore/dom-render 1.0.100 → 1.0.103

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 (57) hide show
  1. package/DomRender.d.ts +21 -6
  2. package/DomRender.js +54 -23
  3. package/DomRenderProxy.d.ts +7 -3
  4. package/DomRenderProxy.js +120 -49
  5. package/README.MD +469 -112
  6. package/components/ComponentBase.d.ts +12 -10
  7. package/components/ComponentBase.js +92 -46
  8. package/components/ComponentSet.d.ts +2 -2
  9. package/components/appender/Appender.d.ts +2 -2
  10. package/components/checkbox/CheckBox.d.ts +4 -4
  11. package/components/choose/Choose.d.ts +4 -4
  12. package/components/choose/Choose.js +0 -16
  13. package/components/details/Details.d.ts +5 -5
  14. package/components/forOf/ForOf.d.ts +2 -2
  15. package/components/if/If.d.ts +2 -2
  16. package/components/index.d.ts +26 -24
  17. package/components/index.js +2 -1
  18. package/components/input/Input.d.ts +2 -2
  19. package/components/input/Input.js +27 -24
  20. package/components/promise/PromiseSwitch.d.ts +6 -6
  21. package/components/promise/PromiseSwitch.js +15 -0
  22. package/components/radio/Radio.d.ts +4 -4
  23. package/components/router/Route.d.ts +32 -0
  24. package/components/router/Route.js +116 -0
  25. package/components/select/Select.d.ts +3 -3
  26. package/components/select/Select.js +2 -2
  27. package/components/this/This.d.ts +9 -2
  28. package/components/this/This.js +24 -2
  29. package/components/timer/Timer.d.ts +2 -2
  30. package/configs/Config.d.ts +6 -1
  31. package/decorators/DomRenderNoProxy.d.ts +2 -0
  32. package/decorators/DomRenderNoProxy.js +15 -0
  33. package/dist/bundle.js +2 -0
  34. package/events/EventManager.d.ts +16 -4
  35. package/events/EventManager.js +320 -140
  36. package/index.d.ts +48 -1
  37. package/index.js +40 -0
  38. package/lifecycle/OnDestroyRender.d.ts +1 -1
  39. package/lifecycle/OnProxyDomRender.d.ts +1 -0
  40. package/lifecycle/OnProxyDomRender.js +1 -1
  41. package/operators/DrForOf.js +2 -1
  42. package/operators/DrIf.js +3 -2
  43. package/operators/DrTargetElement.js +2 -1
  44. package/operators/DrTargetElementIsElement.d.ts +0 -5
  45. package/operators/DrTargetElementIsElement.js +2 -1
  46. package/operators/DrThis.js +40 -11
  47. package/operators/OperatorExecuter.js +3 -1
  48. package/package.json +5 -4
  49. package/rawsets/Attrs.d.ts +2 -0
  50. package/rawsets/RawSet.d.ts +2 -2
  51. package/rawsets/RawSet.js +48 -33
  52. package/routers/HashRouter.d.ts +5 -4
  53. package/routers/HashRouter.js +8 -5
  54. package/routers/PathRouter.d.ts +5 -4
  55. package/routers/PathRouter.js +6 -4
  56. package/routers/Router.d.ts +22 -8
  57. package/routers/Router.js +44 -24
package/DomRender.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Config } from './configs/Config';
2
2
  import { ConstructorType } from '@dooboostore/core/types';
3
3
  import { RawSet } from './rawsets/RawSet';
4
4
  import { Router } from './routers/Router';
5
- export type RunConfig<T = any> = Omit<Config<T>, 'router'> & {
5
+ export type DomRenderRunConfig<T = any> = Omit<Config<T>, 'router' | 'uuid' | 'eventManager' | 'messenger' | 'root' | 'rootElement'> & {
6
6
  routerType?: 'path' | 'hash' | ((obj: T, window: Window) => Router) | Router;
7
7
  };
8
8
  export type CreateComponentParam = {
@@ -12,12 +12,27 @@ export type CreateComponentParam = {
12
12
  template?: string;
13
13
  styles?: string[] | string;
14
14
  };
15
- export declare class DomRender {
16
- static run<T extends object>({ rootObject, target, config }: {
17
- rootObject: T | (() => T);
15
+ export type DomRenderRunParameter<T extends object> = {
16
+ rootObject: T | (() => T);
17
+ target?: Element | null;
18
+ config?: DomRenderRunConfig;
19
+ };
20
+ export declare class DomRender<T extends object = any> {
21
+ private _config;
22
+ private _target;
23
+ private _rootObject;
24
+ constructor(parameter: DomRenderRunParameter<T>, executeConfig?: {
25
+ autoGo?: string;
26
+ });
27
+ get rootObject(): T;
28
+ get config(): Config;
29
+ get target(): Element;
30
+ static run<T extends object>(data: DomRenderRunParameter<T>): T;
31
+ static runSet<T extends object>({ rootObject, target, config }: DomRenderRunParameter<T>): {
32
+ rootObject: T;
18
33
  target?: Element | null;
19
- config?: RunConfig;
20
- }): T;
34
+ config: Config;
35
+ };
21
36
  static createComponent(param: CreateComponentParam): import("./configs/TargetElement").TargetElement;
22
37
  static createAttribute(attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment): import("./configs/TargetAttr").TargetAttr;
23
38
  }
package/DomRender.js CHANGED
@@ -5,37 +5,54 @@ import { DomRenderFinalProxy } from './types/Types';
5
5
  import { RawSet } from './rawsets/RawSet';
6
6
  import { DefaultMessenger } from './messenger/DefaultMessenger';
7
7
  import { drComponent } from './components';
8
+ import { EventManager } from './events/EventManager';
9
+ import { RandomUtils } from '@dooboostore/core/random/RandomUtils';
10
+ let eventManager = null;
8
11
  export class DomRender {
9
- static run({ rootObject, target, config }) {
10
- var _a, _b, _c;
12
+ constructor(parameter, executeConfig) {
13
+ var _a;
14
+ const s = DomRender.runSet(parameter);
15
+ this._config = s.config;
16
+ this._target = s.target;
17
+ this._rootObject = s.rootObject;
18
+ if (executeConfig && (executeConfig === null || executeConfig === void 0 ? void 0 : executeConfig.autoGo)) {
19
+ (_a = this._config.router) === null || _a === void 0 ? void 0 : _a.go(executeConfig.autoGo);
20
+ }
21
+ }
22
+ get rootObject() {
23
+ return this._rootObject;
24
+ }
25
+ get config() {
26
+ return this._config;
27
+ }
28
+ get target() {
29
+ return this._target;
30
+ }
31
+ static run(data) {
32
+ return DomRender.runSet(data).rootObject;
33
+ }
34
+ static runSet({ rootObject, target, config }) {
35
+ var _a, _b, _c, _d;
36
+ var _e;
37
+ // public static run<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): T {
38
+ // console.log('runSet')
11
39
  rootObject = typeof rootObject === 'function' ? rootObject() : rootObject;
12
- const targetConfig = Object.assign({}, config);
13
40
  let targetObject = rootObject;
14
41
  if ('_DomRender_isProxy' in rootObject) {
15
42
  if (target) {
16
43
  rootObject._DomRender_proxy.initRender(target);
17
44
  }
18
45
  targetObject = rootObject;
19
- return targetObject; // { rootObject: targetObject, target, config: targetConfig };
20
- }
21
- // const domRenderConfig = Object.assign()
22
- // if (config && !config.window) {
23
- // config.window = window;
24
- // }
25
- // config.routerType = config.routerType || 'none';
26
- targetConfig.messenger = DomRenderFinalProxy.final((_a = targetConfig.messenger) !== null && _a !== void 0 ? _a : new DefaultMessenger(targetConfig));
27
- targetConfig.proxyExcludeTyps = (_b = targetConfig.proxyExcludeTyps) !== null && _b !== void 0 ? _b : [];
28
- (_c = targetConfig.targetElements) !== null && _c !== void 0 ? _c : (targetConfig.targetElements = []);
29
- for (const value of Object.values(drComponent)) {
30
- const a = value(config);
31
- if (!targetConfig.targetElements.find(it => it.name === a.name)) {
32
- targetConfig.targetElements.push(a);
33
- }
34
- // if (targetConfig.targetElements.indexOf(value) === -1) {
35
- // }
46
+ // return targetObject;
47
+ return { rootObject: targetObject, target, config: rootObject._domRender_config };
36
48
  }
37
- // console.log('----------', targetConfig.proxyExcludeTyps)
38
- // console.log('----------', targetConfig.targetElements)
49
+ const targetConfig = Object.assign({}, config);
50
+ eventManager !== null && eventManager !== void 0 ? eventManager : (eventManager = new EventManager(targetConfig.window));
51
+ (_a = (_e = targetConfig.window).domRender) !== null && _a !== void 0 ? _a : (_e.domRender = { configs: [] });
52
+ targetConfig.uuid = RandomUtils.uuid4();
53
+ targetConfig.messenger = DomRenderFinalProxy.final((_b = targetConfig.messenger) !== null && _b !== void 0 ? _b : new DefaultMessenger(targetConfig));
54
+ targetConfig.proxyExcludeTyps = (_c = targetConfig.proxyExcludeTyps) !== null && _c !== void 0 ? _c : [];
55
+ (_d = targetConfig.targetElements) !== null && _d !== void 0 ? _d : (targetConfig.targetElements = []);
39
56
  if (typeof Window !== 'undefined' && targetConfig.proxyExcludeTyps.indexOf(Window) === -1) {
40
57
  targetConfig.proxyExcludeTyps.push(Window);
41
58
  }
@@ -48,6 +65,9 @@ export class DomRender {
48
65
  if (typeof Promise !== 'undefined' && targetConfig.proxyExcludeTyps.indexOf(Promise) === -1) {
49
66
  targetConfig.proxyExcludeTyps.push(Promise);
50
67
  }
68
+ if (typeof ResizeObserver !== 'undefined' && targetConfig.proxyExcludeTyps.indexOf(ResizeObserver) === -1) {
69
+ targetConfig.proxyExcludeTyps.push(ResizeObserver);
70
+ }
51
71
  if (typeof ImageBitmap !== 'undefined' && targetConfig.proxyExcludeTyps.indexOf(ImageBitmap) === -1) {
52
72
  targetConfig.proxyExcludeTyps.push(ImageBitmap);
53
73
  }
@@ -60,9 +80,13 @@ export class DomRender {
60
80
  if (targetConfig.proxyExcludeTyps.indexOf(RawSet) === -1) {
61
81
  targetConfig.proxyExcludeTyps.push(RawSet);
62
82
  }
83
+ targetConfig.rootElement = target;
84
+ targetConfig.eventManager = eventManager;
85
+ targetConfig.window.domRender.configs.push(targetConfig);
63
86
  const domRender = new DomRenderProxy(rootObject, target, targetConfig);
64
87
  const dest = new Proxy(rootObject, domRender);
65
88
  targetObject = dest;
89
+ targetConfig.root = targetObject;
66
90
  // proxy 된 targetObject를 넣어줘야되서 뒤쪽에서 router를 생성해야함
67
91
  let targetRouter;
68
92
  if ((config === null || config === void 0 ? void 0 : config.routerType) === 'hash') {
@@ -78,6 +102,12 @@ export class DomRender {
78
102
  targetRouter = config.routerType;
79
103
  }
80
104
  targetConfig.router = targetRouter;
105
+ for (const value of Object.values(drComponent)) {
106
+ const a = value(targetConfig);
107
+ if (!targetConfig.targetElements.find(it => it.name === a.name)) {
108
+ targetConfig.targetElements.push(a);
109
+ }
110
+ }
81
111
  // console.log('cccccccccccccccccc', targetRouter)
82
112
  // targetRouter.go({path: targetRouter.getUrl()})
83
113
  // if (!config.router) {
@@ -90,7 +120,8 @@ export class DomRender {
90
120
  // }
91
121
  // }
92
122
  domRender.run(targetObject);
93
- return targetObject; // { rootObject: targetObject, config: targetConfig, target };
123
+ return { rootObject: targetObject, config: targetConfig, target };
124
+ // return targetObject;
94
125
  }
95
126
  static createComponent(param) {
96
127
  var _a, _b;
@@ -1,19 +1,23 @@
1
1
  import 'reflect-metadata';
2
2
  import { RawSet } from './rawsets/RawSet';
3
3
  import { Config } from './configs/Config';
4
+ export declare const isWrapProxyDomRenderProxy: <T>(obj: T) => boolean;
5
+ export declare const getDomRenderOriginObject: <T>(obj: T) => T;
6
+ export declare const getDomRenderConfig: (obj: any) => Config | undefined;
7
+ export declare const getDomRenderProxy: <T>(obj: T) => DomRenderProxy<T> | undefined;
4
8
  export declare class DomRenderProxy<T extends object> implements ProxyHandler<T> {
5
9
  _domRender_origin: T;
6
- config: Config;
10
+ _domRender_config: Config;
7
11
  _domRender_ref: Map<object, Set<string>>;
8
12
  _rawSets: Map<string, Set<RawSet>>;
9
13
  _domRender_proxy?: T;
10
14
  _targets: Set<Node>;
11
- constructor(_domRender_origin: T, target: Node | null | undefined, config: Config);
15
+ constructor(_domRender_origin: T, target: Node | null | undefined, _domRender_config: Config);
12
16
  static unFinal<T = any>(obj: T): T;
13
17
  static final<T = any>(obj: T): T;
14
18
  static isFinal<T = any>(obj: T): boolean;
15
19
  run(objProxy: T): void;
16
- initRender(target: Node): void;
20
+ initRender(target: Node, rawSet?: RawSet): void;
17
21
  getRawSets(): RawSet[];
18
22
  render(raws?: RawSet[] | string, fullPathStr?: string): Promise<RawSet[]>;
19
23
  root(pathInfos: {
package/DomRenderProxy.js CHANGED
@@ -9,14 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import 'reflect-metadata';
11
11
  import { RawSet } from './rawsets/RawSet';
12
- import { EventManager, eventManager } from './events/EventManager';
12
+ import { EventManager } from './events/EventManager';
13
13
  import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';
14
14
  import { DomRenderFinalProxy, Shield } from './types/Types';
15
15
  import { RawSetType } from './rawsets/RawSetType';
16
16
  import { DrThisProperty } from './operators/DrThisProperty';
17
17
  import { RawSetOperatorType } from './rawsets/RawSetOperatorType';
18
18
  import { ComponentSet } from './components/ComponentSet';
19
- import { DomRenderNoProxyKey } from './decorators/DomRenderNoProxy';
19
+ import { DomRenderNoProxyKey, isDomRenderNoProxy } from './decorators/DomRenderNoProxy';
20
20
  import { isOnCreateRender } from './lifecycle/OnCreateRender';
21
21
  import { isOnInitRender } from './lifecycle/OnInitRender';
22
22
  import { isOnCreateRenderData } from './lifecycle/OnCreateRenderData';
@@ -25,17 +25,52 @@ import { DocumentUtils } from '@dooboostore/core-web/document/DocumentUtils';
25
25
  import { isDefined } from '@dooboostore/core/types';
26
26
  import { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';
27
27
  import { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';
28
+ import { ObjectUtils } from '@dooboostore/core/object';
29
+ import { ValidUtils } from '@dooboostore/core/valid';
30
+ import { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';
28
31
  const excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];
32
+ export const isWrapProxyDomRenderProxy = (obj) => {
33
+ return obj && typeof obj === 'object' && ('_DomRender_isProxy' in obj);
34
+ };
35
+ export const getDomRenderOriginObject = (obj) => {
36
+ if (isWrapProxyDomRenderProxy(obj)) {
37
+ return obj._domRender_origin;
38
+ }
39
+ return obj;
40
+ };
41
+ export const getDomRenderConfig = (obj) => {
42
+ if (isWrapProxyDomRenderProxy(obj)) {
43
+ return obj._domRender_config;
44
+ }
45
+ return undefined;
46
+ };
47
+ //@ts-ignore
48
+ export const getDomRenderProxy = (obj) => {
49
+ if (isWrapProxyDomRenderProxy(obj)) {
50
+ //@ts-ignore
51
+ return obj._domRender_proxy;
52
+ }
53
+ return undefined;
54
+ };
29
55
  export class DomRenderProxy {
30
- constructor(_domRender_origin, target, config) {
56
+ constructor(_domRender_origin, target, _domRender_config) {
31
57
  this._domRender_origin = _domRender_origin;
32
- this.config = config;
58
+ this._domRender_config = _domRender_config;
33
59
  this._domRender_ref = new Map();
34
60
  this._rawSets = new Map();
61
+ // public _firstTarget: Node;
35
62
  this._targets = new Set();
36
63
  if (target) {
37
64
  this._targets.add(target);
65
+ // this._firstTarget = target;
38
66
  }
67
+ // setInterval(() => {
68
+ // this._rawSets.forEach(it => {
69
+ // Array.from(it).forEach(it => {
70
+ // console.log(it, it.isConnected)
71
+ // })
72
+ // });
73
+ // }, 1000)
39
74
  }
40
75
  static unFinal(obj) {
41
76
  return DomRenderFinalProxy.unFinal(obj);
@@ -47,10 +82,11 @@ export class DomRenderProxy {
47
82
  return DomRenderFinalProxy.isFinal(obj);
48
83
  }
49
84
  run(objProxy) {
50
- var _a;
51
85
  this._domRender_proxy = objProxy;
52
- (_a = objProxy === null || objProxy === void 0 ? void 0 : objProxy.onProxyDomRender) === null || _a === void 0 ? void 0 : _a.call(objProxy, this.config);
53
- const obj = objProxy._DomRender_origin;
86
+ if (isOnProxyDomRender(objProxy)) {
87
+ objProxy.onProxyDomRender(this._domRender_config);
88
+ }
89
+ const obj = getDomRenderOriginObject(objProxy);
54
90
  if (obj) {
55
91
  Object.keys(obj).forEach(it => {
56
92
  var _a, _b;
@@ -65,8 +101,9 @@ export class DomRenderProxy {
65
101
  }
66
102
  const target = obj[it];
67
103
  if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {
68
- const filter = (_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(it => target instanceof it)) !== null && _b !== void 0 ? _b : [];
69
- if (filter.length === 0) {
104
+ const isExcluded = (_b = (_a = this._domRender_config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.some(it => target instanceof it)) !== null && _b !== void 0 ? _b : false;
105
+ // const filter = this._domRender_config.proxyExcludeTyps?.filter(it => target instanceof it) ?? [];
106
+ if (!isExcluded) {
70
107
  const proxyAfter = this.proxy(objProxy, target, it);
71
108
  obj[it] = proxyAfter;
72
109
  }
@@ -78,7 +115,7 @@ export class DomRenderProxy {
78
115
  this.initRender(target);
79
116
  });
80
117
  }
81
- initRender(target) {
118
+ initRender(target, rawSet) {
82
119
  var _a, _b, _c;
83
120
  // if (target instanceof Element) {
84
121
  // target.setAttribute('dr-this', 'this');
@@ -110,12 +147,12 @@ export class DomRenderProxy {
110
147
  }
111
148
  // const innerHTML = (target as any).innerHTML ?? '';
112
149
  this._targets.add(target);
113
- const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);
150
+ const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);
114
151
  // console.log('initRender -------rawSet', rawSets)
115
152
  // 중요 초기에 한번 튕겨줘야함.
116
- eventManager.applyEvent(this._domRender_proxy, eventManager.findAttrElements(target, this.config), this.config);
153
+ this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target, this._domRender_config), this._domRender_config);
117
154
  rawSets.forEach(it => {
118
- const variables = it.getUsingTriggerVariables(this.config);
155
+ const variables = it.getUsingTriggerVariables(this._domRender_config);
119
156
  if (variables.size <= 0) {
120
157
  this.addRawSet('', it);
121
158
  }
@@ -125,7 +162,6 @@ export class DomRenderProxy {
125
162
  });
126
163
  }
127
164
  });
128
- // console.log('1111111111111', this.getRawSets());
129
165
  this.render(this.getRawSets()).then(it => {
130
166
  var _a, _b;
131
167
  // const render = {target} as Render;
@@ -143,7 +179,7 @@ export class DomRenderProxy {
143
179
  // }
144
180
  }
145
181
  if (isOnInitRender(this._domRender_proxy)) {
146
- this._domRender_proxy.onInitRender(initParam, {});
182
+ this._domRender_proxy.onInitRender(initParam, rawSet !== null && rawSet !== void 0 ? rawSet : {});
147
183
  }
148
184
  });
149
185
  }
@@ -171,7 +207,7 @@ export class DomRenderProxy {
171
207
  const rawSets = raws !== null && raws !== void 0 ? raws : this.getRawSets();
172
208
  // console.log('----', rawSets);
173
209
  for (const it of rawSets) {
174
- it.getUsingTriggerVariables(this.config).forEach(path => {
210
+ it.getUsingTriggerVariables(this._domRender_config).forEach(path => {
175
211
  // console.log('getUsingTriggerVariables->', path);
176
212
  this.addRawSet(path, it);
177
213
  });
@@ -186,20 +222,20 @@ export class DomRenderProxy {
186
222
  }
187
223
  else if (it.type === RawSetType.TARGET_ELEMENT && ((_e = (_d = it.dataSet) === null || _d === void 0 ? void 0 : _d.render) === null || _e === void 0 ? void 0 : _e.currentThis) && fullPathStr && targetAttrMap) {
188
224
  new Map(JSON.parse(targetAttrMap)).forEach((v, k) => {
189
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
190
- var _m;
225
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
226
+ var _o;
191
227
  // it?.data.onChangeAttrRender(k, null, v);
192
228
  const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);
193
229
  if (isUsing) {
194
- const targetAttrObject = RawSet.getAttributeObject(it.point.node, { script: (_c = (_b = (_a = it.dataSet) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.renderScript) !== null && _c !== void 0 ? _c : '', obj: Object.assign(this._domRender_proxy, { __render: (_d = it.dataSet) === null || _d === void 0 ? void 0 : _d.render }) });
195
- (_e = (_m = it.dataSet).render) !== null && _e !== void 0 ? _e : (_m.render = {});
230
+ const targetAttrObject = RawSet.getAttributeObject(it.point.node, { script: (_c = (_b = (_a = it.dataSet) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.renderScript) !== null && _c !== void 0 ? _c : '', obj: Object.assign((_d = this._domRender_proxy) !== null && _d !== void 0 ? _d : {}, { __render: (_e = it.dataSet) === null || _e === void 0 ? void 0 : _e.render }) });
231
+ (_f = (_o = it.dataSet).render) !== null && _f !== void 0 ? _f : (_o.render = {});
196
232
  it.dataSet.render.attribute = targetAttrObject;
197
233
  // const render = it.dataSet?.render;
198
234
  // console.log('render-->!!!!!', it.dataSet.render);
199
235
  // const script = `${render.renderScript} return ${v} `;
200
236
  // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));
201
- if (isOnChangeAttrRender((_g = (_f = it.dataSet) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.currentThis)) {
202
- (_l = (_k = (_j = (_h = it.dataSet) === null || _h === void 0 ? void 0 : _h.render) === null || _j === void 0 ? void 0 : _j.currentThis) === null || _k === void 0 ? void 0 : _k.onChangeAttrRender) === null || _l === void 0 ? void 0 : _l.call(_k, k, targetAttrObject[k], { rawSet: it });
237
+ if (isOnChangeAttrRender((_h = (_g = it.dataSet) === null || _g === void 0 ? void 0 : _g.render) === null || _h === void 0 ? void 0 : _h.currentThis)) {
238
+ (_m = (_l = (_k = (_j = it.dataSet) === null || _j === void 0 ? void 0 : _j.render) === null || _k === void 0 ? void 0 : _k.currentThis) === null || _l === void 0 ? void 0 : _l.onChangeAttrRender) === null || _m === void 0 ? void 0 : _m.call(_l, k, targetAttrObject[k], { rawSet: it });
203
239
  }
204
240
  }
205
241
  // console.log('---?', v, fullPathStr, isUsing);
@@ -207,7 +243,7 @@ export class DomRenderProxy {
207
243
  // ------------------->
208
244
  }
209
245
  else {
210
- const rawSets = yield it.render(this._domRender_proxy, this.config);
246
+ const rawSets = yield it.render(this._domRender_proxy, this._domRender_config);
211
247
  // 그외 자식들 render
212
248
  if (rawSets && rawSets.length > 0) {
213
249
  yield this.render(rawSets);
@@ -272,7 +308,7 @@ export class DomRenderProxy {
272
308
  const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');
273
309
  const lastPropertyName = strings[strings.length - 1];
274
310
  const path = 'this' + front;
275
- const data = ScriptUtils.evalReturn(path, this._domRender_proxy);
311
+ const data = ScriptUtils.evalReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);
276
312
  // console.log('root-->', this._rawSets, path, data );
277
313
  // console.log('--!!!!', fullPathStr, iterable, data, front, last);
278
314
  // 왜여기서 promise를 했을까를 생각해보면......훔.. 변수변경과 화면 뿌려주는걸 동기로하면 성능이 안나오고 비현실적이다. 그래서 promise
@@ -305,7 +341,7 @@ export class DomRenderProxy {
305
341
  startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));
306
342
  }
307
343
  if (!keys.includes(lastPropertyName)) {
308
- const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this.config);
344
+ const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);
309
345
  if (raws) {
310
346
  rawSets.push(...raws);
311
347
  }
@@ -325,6 +361,7 @@ export class DomRenderProxy {
325
361
  }
326
362
  }
327
363
  else if (iterable) {
364
+ // console.log('------------',iterable, fullPaths)
328
365
  rData = yield this.render(Array.from(iterable), fullPathStr);
329
366
  }
330
367
  // console.log('-----------', this, lastPropertyName );
@@ -338,8 +375,8 @@ export class DomRenderProxy {
338
375
  this._targets.forEach(it => {
339
376
  // return;
340
377
  if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
341
- const targets = eventManager.findAttrElements(it, this.config);
342
- eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);
378
+ const targets = this._domRender_config.eventManager.findAttrElements(it, this._domRender_config);
379
+ this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);
343
380
  }
344
381
  });
345
382
  //랜더대상된게있으면
@@ -367,7 +404,7 @@ export class DomRenderProxy {
367
404
  // return obj;
368
405
  // }
369
406
  // }catch (e) {}
370
- var _a, _b, _c, _d;
407
+ var _a, _b, _c, _d, _e;
371
408
  // console.log('set-->', p, value, target, receiver, Reflect.getMetadata(DomRenderNoProxyKey, target, p) );
372
409
  if ((typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) ||
373
410
  Reflect.getMetadata(DomRenderNoProxyKey, target, p)) {
@@ -402,12 +439,16 @@ export class DomRenderProxy {
402
439
  // const rootDomRenderProxy = this.findRootDomRenderProxy();
403
440
  // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)
404
441
  // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)
405
- (_a = DocumentUtils.querySelectorAllByAttributeName(this.config.window.document, EventManager.normalAttrMapAttrName)) === null || _a === void 0 ? void 0 : _a.forEach(elementInfo => {
442
+ const rootElement = (_a = this._domRender_config.rootElement) !== null && _a !== void 0 ? _a : this._domRender_config.window.document;
443
+ (_b = DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)) === null || _b === void 0 ? void 0 : _b.forEach(elementInfo => {
444
+ // @ts-ignore
445
+ // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);
406
446
  const targets = new Map(ScriptUtils.evalReturn(elementInfo.value));
407
447
  Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
408
448
  return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
409
449
  }).forEach(it => {
410
- const value1 = ScriptUtils.evalReturn(it.valueScript, it.pathInfo.obj);
450
+ const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);
451
+ const value1 = ScriptUtils.evalReturn(optionalPath, it.pathInfo.obj);
411
452
  // console.log('proxy set!Attribut======', it.key, value1)
412
453
  if (value1 === null) {
413
454
  elementInfo.element.removeAttribute(it.key);
@@ -419,18 +460,23 @@ export class DomRenderProxy {
419
460
  }
420
461
  });
421
462
  });
422
- // 여기서 링크 같은거 해줘야함
423
- (_b = DocumentUtils.querySelectorAllByAttributeName(this.config.window.document, EventManager.linkTargetMapAttrName)) === null || _b === void 0 ? void 0 : _b.forEach(elementInfo => {
463
+ //여기서 링크 같은거 해줘야함 *-link로 변수값이 변경되면 그걸 참고하고있는 다른것들에도 해줘야한다.
464
+ (_c = DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)) === null || _c === void 0 ? void 0 : _c.forEach(elementInfo => {
465
+ // @ts-ignore
424
466
  const targets = new Map(ScriptUtils.evalReturn(elementInfo.value));
425
467
  Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
426
468
  return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it => ({ key, valueScript: valueScript, pathInfo: it }));
427
469
  }).forEach(info => {
428
470
  const value1 = ScriptUtils.evalReturn(info.valueScript, info.pathInfo.obj);
429
- if (value1 === null) {
430
- elementInfo.element.removeAttribute(info.key);
431
- }
432
- else {
433
- elementInfo.element.setAttribute(info.key, value1);
471
+ const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);
472
+ if (applyAttributeName) {
473
+ if (value1 === null) {
474
+ elementInfo.element.removeAttribute(applyAttributeName.property);
475
+ }
476
+ else {
477
+ // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)
478
+ elementInfo.element.setAttribute(applyAttributeName.property, value1);
479
+ }
434
480
  }
435
481
  });
436
482
  Array.from(targets.entries()).filter(([key, value]) => value.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
@@ -442,9 +488,9 @@ export class DomRenderProxy {
442
488
  }
443
489
  });
444
490
  });
445
- if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_c = this.config.proxyExcludeOnBeforeReturnSets) !== null && _c !== void 0 ? _c : []).concat(excludeGetSetPropertys).includes(p)) {
491
+ if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !((_d = this._domRender_config.proxyExcludeOnBeforeReturnSets) !== null && _d !== void 0 ? _d : []).concat(excludeGetSetPropertys).includes(p)) {
446
492
  if (isOnBeforeReturnSet(receiver)) {
447
- (_d = receiver.onBeforeReturnSet) === null || _d === void 0 ? void 0 : _d.call(receiver, p, value, fullPathInfo.map(it => it.map(it => it.path).join()));
493
+ (_e = receiver.onBeforeReturnSet) === null || _e === void 0 ? void 0 : _e.call(receiver, p, value, fullPathInfo.map(it => it.map(it => it.path).join()));
448
494
  }
449
495
  }
450
496
  return true;
@@ -452,13 +498,16 @@ export class DomRenderProxy {
452
498
  get(target, p, receiver) {
453
499
  var _a, _b;
454
500
  // console.log('get-->', target, p, receiver);
455
- if (p === '_DomRender_origin') {
501
+ if (p === '_DomRender_origin' || p === '_domRender_origin') {
456
502
  return this._domRender_origin;
457
503
  }
458
- else if (p === '_DomRender_ref') {
504
+ else if (p === '_DomRender_ref' || p === '_domRender_ref') {
459
505
  return this._domRender_ref;
460
506
  }
461
- else if (p === '_DomRender_proxy') {
507
+ else if (p === '_DomRender_config' || p === '_domRender_config') {
508
+ return this._domRender_config;
509
+ }
510
+ else if (p === '_DomRender_proxy' || p === '_domRender_proxy') {
462
511
  return this;
463
512
  }
464
513
  else {
@@ -480,7 +529,7 @@ export class DomRenderProxy {
480
529
  if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {
481
530
  it = it._DomRender_origin;
482
531
  }
483
- if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this.config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
532
+ if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !((_a = this._domRender_config.proxyExcludeOnBeforeReturnGets) !== null && _a !== void 0 ? _a : []).concat(excludeGetSetPropertys).includes(p)) {
484
533
  (_b = receiver === null || receiver === void 0 ? void 0 : receiver.onBeforeReturnGet) === null || _b === void 0 ? void 0 : _b.call(receiver, p, it, this.root([[{ path: p, obj: this._domRender_proxy }]], it, false));
485
534
  }
486
535
  return it;
@@ -499,22 +548,44 @@ export class DomRenderProxy {
499
548
  proxy(parentProxy, obj, p) {
500
549
  var _a, _b;
501
550
  try {
502
- const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
503
- if (isNoProxy) {
551
+ // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);
552
+ const isObject = typeof obj === 'object';
553
+ const isNoProxy = isObject && isDomRenderNoProxy(obj, p);
554
+ const isExclude = (_b = ((_a = this._domRender_config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.some(it => obj instanceof it))) !== null && _b !== void 0 ? _b : false;
555
+ const isFinal = isObject && DomRenderProxy.isFinal(obj);
556
+ const isFrozen = Object.isFrozen(obj);
557
+ const isShield = obj instanceof Shield;
558
+ if (isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {
504
559
  return obj;
505
560
  }
506
561
  }
507
562
  catch (e) {
508
563
  }
509
- const proxyTarget = ((_b = (_a = this.config.proxyExcludeTyps) === null || _a === void 0 ? void 0 : _a.filter(it => obj instanceof it)) !== null && _b !== void 0 ? _b : []).length <= 0;
510
- if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
511
- const domRender = new DomRenderProxy(obj, undefined, this.config);
564
+ /*
565
+ const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;
566
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
567
+ const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);
568
+ domRender.addRef(parentProxy, p);
569
+ const proxy = new Proxy(obj, domRender);
570
+ domRender.run(proxy);
571
+ return proxy;
572
+ }
573
+ if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
574
+ const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;
575
+ d.addRef(this._domRender_proxy!, p);
576
+ return obj;
577
+ } else {
578
+ return obj;
579
+ }
580
+ */
581
+ if (!isWrapProxyDomRenderProxy(obj)) {
582
+ const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);
512
583
  domRender.addRef(parentProxy, p);
513
584
  const proxy = new Proxy(obj, domRender);
514
585
  domRender.run(proxy);
515
586
  return proxy;
516
587
  }
517
- if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {
588
+ if (isWrapProxyDomRenderProxy(obj)) {
518
589
  const d = obj._DomRender_proxy;
519
590
  d.addRef(this._domRender_proxy, p);
520
591
  return obj;