@dooboostore/dom-render 1.0.102 → 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.
- package/DomRender.d.ts +21 -6
- package/DomRender.js +54 -23
- package/DomRenderProxy.d.ts +7 -3
- package/DomRenderProxy.js +120 -49
- package/README.MD +380 -65
- package/components/ComponentBase.d.ts +11 -9
- package/components/ComponentBase.js +41 -14
- package/components/ComponentSet.d.ts +2 -2
- package/components/appender/Appender.d.ts +2 -2
- package/components/checkbox/CheckBox.d.ts +4 -4
- package/components/choose/Choose.d.ts +4 -4
- package/components/choose/Choose.js +0 -16
- package/components/details/Details.d.ts +5 -5
- package/components/forOf/ForOf.d.ts +2 -2
- package/components/if/If.d.ts +2 -2
- package/components/index.d.ts +26 -24
- package/components/index.js +2 -1
- package/components/input/Input.d.ts +2 -2
- package/components/input/Input.js +27 -24
- package/components/promise/PromiseSwitch.d.ts +6 -6
- package/components/promise/PromiseSwitch.js +15 -0
- package/components/radio/Radio.d.ts +4 -4
- package/components/router/Route.d.ts +32 -0
- package/components/router/Route.js +116 -0
- package/components/select/Select.d.ts +3 -3
- package/components/select/Select.js +2 -2
- package/components/this/This.d.ts +9 -2
- package/components/this/This.js +24 -2
- package/components/timer/Timer.d.ts +2 -2
- package/configs/Config.d.ts +6 -1
- package/decorators/DomRenderNoProxy.d.ts +2 -0
- package/decorators/DomRenderNoProxy.js +15 -0
- package/dist/bundle.js +2 -0
- package/events/EventManager.d.ts +16 -4
- package/events/EventManager.js +320 -140
- package/index.d.ts +48 -1
- package/index.js +40 -0
- package/lifecycle/OnDestroyRender.d.ts +1 -1
- package/lifecycle/OnProxyDomRender.d.ts +1 -0
- package/lifecycle/OnProxyDomRender.js +1 -1
- package/operators/DrForOf.js +2 -1
- package/operators/DrIf.js +3 -2
- package/operators/DrTargetElement.js +2 -1
- package/operators/DrTargetElementIsElement.d.ts +0 -5
- package/operators/DrTargetElementIsElement.js +2 -1
- package/operators/DrThis.js +40 -11
- package/operators/OperatorExecuter.js +3 -1
- package/package.json +5 -4
- package/rawsets/Attrs.d.ts +2 -0
- package/rawsets/RawSet.d.ts +2 -2
- package/rawsets/RawSet.js +48 -33
- package/routers/HashRouter.d.ts +5 -4
- package/routers/HashRouter.js +8 -5
- package/routers/PathRouter.d.ts +5 -4
- package/routers/PathRouter.js +6 -4
- package/routers/Router.d.ts +22 -8
- 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
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
20
|
-
}
|
|
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
|
-
|
|
10
|
-
var _a
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
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
|
|
123
|
+
return { rootObject: targetObject, config: targetConfig, target };
|
|
124
|
+
// return targetObject;
|
|
94
125
|
}
|
|
95
126
|
static createComponent(param) {
|
|
96
127
|
var _a, _b;
|
package/DomRenderProxy.d.ts
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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
|
|
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,
|
|
56
|
+
constructor(_domRender_origin, target, _domRender_config) {
|
|
31
57
|
this._domRender_origin = _domRender_origin;
|
|
32
|
-
this.
|
|
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
|
-
(
|
|
53
|
-
|
|
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
|
|
69
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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: (
|
|
195
|
-
(
|
|
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((
|
|
202
|
-
(
|
|
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.
|
|
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.
|
|
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.
|
|
342
|
-
eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.
|
|
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 =
|
|
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
|
|
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
|
-
(
|
|
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
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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' && !((
|
|
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
|
-
(
|
|
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 === '
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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 (
|
|
588
|
+
if (isWrapProxyDomRenderProxy(obj)) {
|
|
518
589
|
const d = obj._DomRender_proxy;
|
|
519
590
|
d.addRef(this._domRender_proxy, p);
|
|
520
591
|
return obj;
|