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