@dooboostore/dom-render 1.0.108 → 1.0.109
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 +12 -5
- 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 +20 -2
- 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/choose/Choose.js +4 -0
- package/dist/cjs/components/choose/Choose.js.map +2 -2
- package/dist/cjs/components/router/RouterOutlet.js +15 -1
- package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
- package/dist/cjs/components/select/Select.js +20 -6
- package/dist/cjs/components/select/Select.js.map +2 -2
- package/dist/cjs/components/timer/Timer.js +14 -11
- 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/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/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 +154 -74
- package/dist/cjs/rawsets/RawSet.js.map +3 -3
- package/dist/cjs/rawsets/Render.js.map +1 -1
- package/dist/cjs/routers/Router.js +31 -15
- 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 +12 -5
- 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 +20 -2
- 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/choose/Choose.js +4 -0
- package/dist/esm/components/choose/Choose.js.map +2 -2
- package/dist/esm/components/router/RouterOutlet.js +16 -2
- package/dist/esm/components/router/RouterOutlet.js.map +2 -2
- package/dist/esm/components/select/Select.js +20 -6
- package/dist/esm/components/select/Select.js.map +2 -2
- package/dist/esm/components/timer/Timer.js +14 -11
- 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/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/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 +154 -74
- package/dist/esm/rawsets/RawSet.js.map +3 -3
- package/dist/esm/routers/Router.js +31 -15
- package/dist/esm/routers/Router.js.map +3 -3
- package/dist/esm-bundle/dooboostore-dom-render.esm.js +12586 -6496
- 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.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 +7 -1
- 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/choose/Choose.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/router/RouterOutlet.d.ts +5 -1
- package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
- package/dist/types/components/select/Select.d.ts +2 -2
- package/dist/types/components/select/Select.d.ts.map +1 -1
- package/dist/types/components/timer/Timer.d.ts +5 -3
- package/dist/types/components/timer/Timer.d.ts.map +1 -1
- package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- 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/DrTargetElement.d.ts.map +1 -1
- package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
- package/dist/types/rawsets/RawSet.d.ts +11 -4
- 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/Router.d.ts +2 -3
- package/dist/types/routers/Router.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-dom-render.umd.js +12600 -6529
- package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
- package/package.json +6 -5
- package/src/DomRender.ts +62 -34
- package/src/DomRenderProxy.ts +20 -8
- package/src/bundle-entry.ts +5 -3
- package/src/components/ComponentBase.ts +29 -7
- package/src/components/ComponentRouterBase.ts +17 -2
- package/src/components/choose/Choose.ts +4 -0
- package/src/components/router/RouterOutlet.ts +25 -5
- package/src/components/select/Select.ts +40 -26
- package/src/components/timer/Timer.ts +19 -51
- package/src/decorators/DomRenderNoProxy.ts +3 -1
- package/src/lifecycle/OnRawSetRendered.ts +15 -0
- package/src/lifecycle/index.ts +1 -0
- package/src/operators/DrTargetElement.ts +14 -0
- package/src/operators/OperatorExecuter.ts +1 -2
- package/src/rawsets/RawSet.ts +572 -257
- package/src/rawsets/Render.ts +1 -0
- package/src/routers/Router.ts +40 -23
- package/types.d.ts +68 -20
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ScriptUtils } from "@dooboostore/core-web/script/ScriptUtils";
|
|
2
1
|
import { ObjectUtils } from "@dooboostore/core/object/ObjectUtils";
|
|
3
2
|
var ExecuteState = /* @__PURE__ */ ((ExecuteState2) => {
|
|
4
3
|
ExecuteState2[ExecuteState2["EXECUTE"] = 0] = "EXECUTE";
|
|
@@ -24,7 +23,7 @@ class OperatorExecuter {
|
|
|
24
23
|
let r = attrValue;
|
|
25
24
|
if (r && this.startingExecute) {
|
|
26
25
|
const optionalPath = ObjectUtils.Path.toOptionalChainPath(attrValue);
|
|
27
|
-
r =
|
|
26
|
+
r = ObjectUtils.Script.evaluate(` ${this.render.bindScript}; return ${optionalPath}`, Object.assign(this.source.obj, { __render: this.render }));
|
|
28
27
|
}
|
|
29
28
|
if (this.source.operatorAround?.before) {
|
|
30
29
|
r = this.source.operatorAround?.before(r, this);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/operators/OperatorExecuter.ts"],
|
|
4
|
-
"sourcesContent": ["import { AttrInitCallBack } from '../rawsets/AttrInitCallBack';\nimport { ElementInitCallBack } from '../rawsets/ElementInitCallBack';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { Attrs } from '../rawsets/Attrs';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport {
|
|
5
|
-
"mappings": "AAOA,SAAS,mBAAmB;
|
|
4
|
+
"sourcesContent": ["import { AttrInitCallBack } from '../rawsets/AttrInitCallBack';\nimport { ElementInitCallBack } from '../rawsets/ElementInitCallBack';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { Attrs } from '../rawsets/Attrs';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport interface OperatorAround {\n beforeAttr?: (value: string | null | undefined, opratorExecutor: OperatorExecuter) => string | null | undefined,\n before?: (data: any, opratorExecutor: OperatorExecuter) => any,\n after?: (data: any, opratorExecutor: OperatorExecuter) => void,\n}\n\nexport enum ExecuteState {\n EXECUTE,\n NO_EXECUTE,\n STOP\n}\n\nexport type AfterCallBack = {\n onAttrInitCallBacks: AttrInitCallBack[],\n onElementInitCallBacks: ElementInitCallBack[],\n onThisComponentSetCallBacks: ComponentSet[]\n}\nexport type ReturnContainer = { raws: RawSet[], fag: DocumentFragment };\n\nexport type ElementSource = { element: Element, attrs: Attrs, attr?: string | null, attrName?: string | undefined };\n\nexport type Source = { config: DomRenderConfig, operatorAround?: OperatorAround, obj: any };\n\nexport abstract class OperatorExecuter<T = any> {\n constructor(public rawSet: RawSet,\n public render: Render,\n public returnContainer: ReturnContainer,\n public elementSource: ElementSource,\n public source: Source,\n public afterCallBack: AfterCallBack,\n public startingExecute = true) {\n };\n\n async start(): Promise<ExecuteState> {\n let attrValue = this.elementSource.attr;\n // console.log('OperatorExecuter ', attrValue, this);\n if (this.source.operatorAround?.beforeAttr) {\n attrValue = this.source.operatorAround.beforeAttr(attrValue, this) ?? '';\n }\n\n let r = attrValue;\n if (r && this.startingExecute) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(attrValue);\n r = ObjectUtils.Script.evaluate(` ${this.render.bindScript}; return ${optionalPath}`, Object.assign(this.source.obj, {__render: this.render}));\n }\n if (this.source.operatorAround?.before) {\n r = this.source.operatorAround?.before(r, this);\n }\n\n const state = await this.execute(r as unknown as T)\n\n this.source.operatorAround?.after?.(r, this);\n return state;\n };\n\n abstract execute(value: T): Promise<ExecuteState>;\n}\n"],
|
|
5
|
+
"mappings": "AAOA,SAAS,mBAAmB;AAQrB,IAAK,eAAL,kBAAKA,kBAAL;AACL,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AAHU,SAAAA;AAAA,GAAA;AAiBL,MAAe,iBAA0B;AAAA,EAC9C,YAAmB,QACA,QACA,iBACA,eACA,QACA,eACA,kBAAkB,MAAM;AANxB;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACnB;AAAA,EAEA,MAAM,QAA+B;AACnC,QAAI,YAAY,KAAK,cAAc;AAEnC,QAAI,KAAK,OAAO,gBAAgB,YAAY;AAC1C,kBAAY,KAAK,OAAO,eAAe,WAAW,WAAW,IAAI,KAAK;AAAA,IACxE;AAEA,QAAI,IAAI;AACR,QAAI,KAAK,KAAK,iBAAiB;AAC7B,YAAM,eAAe,YAAY,KAAK,oBAAoB,SAAS;AACnE,UAAI,YAAY,OAAO,SAAS,IAAI,KAAK,OAAO,UAAU,YAAY,YAAY,IAAI,OAAO,OAAO,KAAK,OAAO,KAAK,EAAC,UAAU,KAAK,OAAM,CAAC,CAAC;AAAA,IAC/I;AACA,QAAI,KAAK,OAAO,gBAAgB,QAAQ;AACtC,UAAI,KAAK,OAAO,gBAAgB,OAAO,GAAG,IAAI;AAAA,IAChD;AAEA,UAAM,QAAQ,MAAM,KAAK,QAAQ,CAAiB;AAElD,SAAK,OAAO,gBAAgB,QAAQ,GAAG,IAAI;AAC3C,WAAO;AAAA,EACT;AAGF;",
|
|
6
6
|
"names": ["ExecuteState"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
|
|
2
2
|
import { StringUtils } from "@dooboostore/core/string/StringUtils";
|
|
3
|
-
import { ScriptUtils } from "@dooboostore/core-web/script/ScriptUtils";
|
|
4
3
|
import { EventManager } from "../events/EventManager.js";
|
|
5
4
|
import { Range } from "../iterators/Range.js";
|
|
6
5
|
import { ElementUtils } from "@dooboostore/core-web/element/ElementUtils";
|
|
@@ -32,6 +31,7 @@ import { isOnCreatedThisChild } from "../lifecycle/OnCreatedThisChild.js";
|
|
|
32
31
|
import { isOnDestroyRender } from "../lifecycle/OnDestroyRender.js";
|
|
33
32
|
import { DrTargetElementIsElement } from "../operators/DrTargetElementIsElement.js";
|
|
34
33
|
import { ObjectUtils } from "@dooboostore/core/object/ObjectUtils";
|
|
34
|
+
import { NodeUtils } from "@dooboostore/core-web/node/NodeUtils";
|
|
35
35
|
const _RawSet = class _RawSet {
|
|
36
36
|
constructor(uuid, type, point, dataSet, detect) {
|
|
37
37
|
this.uuid = uuid;
|
|
@@ -43,14 +43,14 @@ const _RawSet = class _RawSet {
|
|
|
43
43
|
const path = this.findNearThisPath(rawSet);
|
|
44
44
|
if (path) {
|
|
45
45
|
const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);
|
|
46
|
-
return
|
|
46
|
+
return ObjectUtils.Script.evaluateReturn(optionalPath, obj);
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
this.findParentThis = (obj, rawSet = this) => {
|
|
50
50
|
const path = this.findParentThisPath(rawSet);
|
|
51
51
|
if (path) {
|
|
52
52
|
const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);
|
|
53
|
-
return
|
|
53
|
+
return ObjectUtils.Script.evaluateReturn(optionalPath, obj);
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
this.findNearThisPath = (rawSet = this) => {
|
|
@@ -65,11 +65,10 @@ const _RawSet = class _RawSet {
|
|
|
65
65
|
const paths = [];
|
|
66
66
|
const findPath = (rawSet2) => {
|
|
67
67
|
if (rawSet2 && rawSet2.point) {
|
|
68
|
-
if ("getAttribute" in rawSet2.point.start && rawSet2.point.start.getAttribute("this-path")) {
|
|
68
|
+
if (rawSet2.point?.start && "getAttribute" in rawSet2.point.start && rawSet2.point.start.getAttribute("this-path")) {
|
|
69
69
|
paths.push(rawSet2.point.start.getAttribute("this-path"));
|
|
70
70
|
}
|
|
71
|
-
if (rawSet2.point.parentRawSet)
|
|
72
|
-
findPath(rawSet2.point.parentRawSet);
|
|
71
|
+
if (rawSet2.point.parentRawSet) findPath(rawSet2.point.parentRawSet);
|
|
73
72
|
}
|
|
74
73
|
};
|
|
75
74
|
findPath(rawSet);
|
|
@@ -78,7 +77,7 @@ const _RawSet = class _RawSet {
|
|
|
78
77
|
};
|
|
79
78
|
}
|
|
80
79
|
get isConnected() {
|
|
81
|
-
return this.point.start.isConnected && this.point.end.isConnected;
|
|
80
|
+
return this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected;
|
|
82
81
|
}
|
|
83
82
|
// 중요
|
|
84
83
|
getUsingTriggerVariables(config) {
|
|
@@ -93,7 +92,12 @@ const _RawSet = class _RawSet {
|
|
|
93
92
|
}
|
|
94
93
|
} else if (cNode.nodeType === Node.ELEMENT_NODE) {
|
|
95
94
|
const element = cNode;
|
|
96
|
-
const targetAttrNames = (config?.targetAttrs?.map((it) => it.name) ?? []).concat(
|
|
95
|
+
const targetAttrNames = (config?.targetAttrs?.map((it) => it.name) ?? []).concat(
|
|
96
|
+
_RawSet.DR_ATTRIBUTES,
|
|
97
|
+
_RawSet.DR_DETECT_FILTER_OPTIONNAME,
|
|
98
|
+
_RawSet.DR_DETECT_IF_OPTIONNAME,
|
|
99
|
+
_RawSet.DR_DETECT_ATTR_OPTIONNAME
|
|
100
|
+
);
|
|
97
101
|
const targetScripts = targetAttrNames.map((it) => element.getAttribute(it)).filter((it) => it).map((it) => `(${it})`);
|
|
98
102
|
const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);
|
|
99
103
|
if (targetAttrMap) {
|
|
@@ -114,6 +118,8 @@ const _RawSet = class _RawSet {
|
|
|
114
118
|
return usingTriggerVariables;
|
|
115
119
|
}
|
|
116
120
|
// 중요 render 처리 부분
|
|
121
|
+
// public async render(obj: any, config: DomRenderConfig): Promise<RawSet[]> {
|
|
122
|
+
// }
|
|
117
123
|
async render(obj, config) {
|
|
118
124
|
const genNode = config.window.document.importNode(this.dataSet.fragment, true);
|
|
119
125
|
const raws = [];
|
|
@@ -121,6 +127,7 @@ const _RawSet = class _RawSet {
|
|
|
121
127
|
const onElementInitCallBacks = [];
|
|
122
128
|
const onThisComponentSetCallBacks = [];
|
|
123
129
|
const drAttrs = [];
|
|
130
|
+
const executedOperators = [];
|
|
124
131
|
for (const cNode of Array.from(genNode.childNodes.values())) {
|
|
125
132
|
let attribute = {};
|
|
126
133
|
if (cNode.nodeType === Node.ELEMENT_NODE) {
|
|
@@ -134,7 +141,7 @@ const _RawSet = class _RawSet {
|
|
|
134
141
|
element: cNode,
|
|
135
142
|
attribute,
|
|
136
143
|
rootObject: obj,
|
|
137
|
-
scriptUtils:
|
|
144
|
+
scriptUtils: ObjectUtils.Script,
|
|
138
145
|
nearThis: this.findNearThis(obj),
|
|
139
146
|
parentThis: this.findParentThis(obj),
|
|
140
147
|
bindScript: ` /** render **/
|
|
@@ -156,12 +163,12 @@ const _RawSet = class _RawSet {
|
|
|
156
163
|
const runText = _RawSet.expressionGroups(textContent)[0][1];
|
|
157
164
|
let newNode;
|
|
158
165
|
if (textContent?.startsWith("#")) {
|
|
159
|
-
const r =
|
|
166
|
+
const r = ObjectUtils.Script.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
|
|
160
167
|
const template = config.window.document.createElement("template");
|
|
161
168
|
template.innerHTML = r;
|
|
162
169
|
newNode = template.content;
|
|
163
170
|
} else {
|
|
164
|
-
const r =
|
|
171
|
+
const r = ObjectUtils.Script.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
|
|
165
172
|
newNode = config.window.document.createTextNode(r);
|
|
166
173
|
}
|
|
167
174
|
cNode.parentNode?.replaceChild(newNode, cNode);
|
|
@@ -221,9 +228,10 @@ const _RawSet = class _RawSet {
|
|
|
221
228
|
for (const operator of operators) {
|
|
222
229
|
const state = await operator.start();
|
|
223
230
|
if (state === ExecuteState.EXECUTE) {
|
|
231
|
+
executedOperators.push(operator);
|
|
224
232
|
break;
|
|
225
233
|
} else if (state === ExecuteState.STOP) {
|
|
226
|
-
return raws;
|
|
234
|
+
return { raws, executedOperators };
|
|
227
235
|
}
|
|
228
236
|
}
|
|
229
237
|
}
|
|
@@ -243,11 +251,14 @@ const _RawSet = class _RawSet {
|
|
|
243
251
|
fag: genNode,
|
|
244
252
|
scripts: EventManager.setBindProperty(config?.scripts, obj)
|
|
245
253
|
});
|
|
246
|
-
|
|
254
|
+
ObjectUtils.Script.evaluate(
|
|
255
|
+
`
|
|
247
256
|
const ${EventManager.FAG_VARNAME} = this.__render.fag;
|
|
248
257
|
const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;
|
|
249
258
|
const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
|
|
250
|
-
${it.drCompleteOption}`,
|
|
259
|
+
${it.drCompleteOption}`,
|
|
260
|
+
Object.assign(obj, { __render: render })
|
|
261
|
+
);
|
|
251
262
|
}
|
|
252
263
|
});
|
|
253
264
|
for (const it of onThisComponentSetCallBacks) {
|
|
@@ -275,7 +286,7 @@ const _RawSet = class _RawSet {
|
|
|
275
286
|
}
|
|
276
287
|
});
|
|
277
288
|
}
|
|
278
|
-
return raws;
|
|
289
|
+
return { raws, executedOperators };
|
|
279
290
|
}
|
|
280
291
|
// 중요 스타일 적용 부분
|
|
281
292
|
static generateRuleSelector(start, end, sit) {
|
|
@@ -308,9 +319,7 @@ const _RawSet = class _RawSet {
|
|
|
308
319
|
const isRoot = rule.selector.includes(":root");
|
|
309
320
|
if (!isRoot) {
|
|
310
321
|
const selectors = rule.selector.split(",").map((s) => s.trim());
|
|
311
|
-
const transformedSelectors = selectors.map(
|
|
312
|
-
(selector) => this.generateRuleSelector(start, end, selector)
|
|
313
|
-
);
|
|
322
|
+
const transformedSelectors = selectors.map((selector) => this.generateRuleSelector(start, end, selector));
|
|
314
323
|
rule.selector = transformedSelectors.join(", ");
|
|
315
324
|
}
|
|
316
325
|
} else if (isAtRule(rule)) {
|
|
@@ -322,9 +331,7 @@ const _RawSet = class _RawSet {
|
|
|
322
331
|
rule.children.forEach((childRule) => {
|
|
323
332
|
if (isStyleRule(childRule)) {
|
|
324
333
|
const selectors = childRule.selector.split(",").map((s) => s.trim());
|
|
325
|
-
const transformedSelectors = selectors.map(
|
|
326
|
-
(selector) => this.generateRuleSelector(start, end, selector)
|
|
327
|
-
);
|
|
334
|
+
const transformedSelectors = selectors.map((selector) => this.generateRuleSelector(start, end, selector));
|
|
328
335
|
childRule.selector = transformedSelectors.join(", ");
|
|
329
336
|
}
|
|
330
337
|
});
|
|
@@ -342,7 +349,11 @@ const _RawSet = class _RawSet {
|
|
|
342
349
|
return styleBody;
|
|
343
350
|
}
|
|
344
351
|
applyEvent(obj, fragment = this.dataSet.fragment, config) {
|
|
345
|
-
this.dataSet.config.eventManager.applyEvent(
|
|
352
|
+
this.dataSet.config.eventManager.applyEvent(
|
|
353
|
+
obj,
|
|
354
|
+
this.dataSet.config.eventManager.findAttrElements(fragment, config),
|
|
355
|
+
config
|
|
356
|
+
);
|
|
346
357
|
}
|
|
347
358
|
onRenderedEvent(obj, nodes, config) {
|
|
348
359
|
this.dataSet.config.eventManager.onRenderedEvent(obj, nodes, config);
|
|
@@ -359,7 +370,7 @@ const _RawSet = class _RawSet {
|
|
|
359
370
|
getDrAppendAttributeAndDelete(element, obj) {
|
|
360
371
|
let data = element.getAttribute(_RawSet.DR_APPENDER_NAME);
|
|
361
372
|
if (data && !/\[.+\]/g.test(data)) {
|
|
362
|
-
const currentIndex =
|
|
373
|
+
const currentIndex = ObjectUtils.Script.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);
|
|
363
374
|
data = `${data}[${currentIndex}]`;
|
|
364
375
|
element.setAttribute(_RawSet.DR_APPENDER_NAME, data);
|
|
365
376
|
}
|
|
@@ -372,19 +383,28 @@ const _RawSet = class _RawSet {
|
|
|
372
383
|
}
|
|
373
384
|
// 중요 important
|
|
374
385
|
static checkPointCreates(element, obj, config) {
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
386
|
+
const NodeFilter2 = config.window.NodeFilter;
|
|
387
|
+
const Node2 = config.window.Node;
|
|
388
|
+
const processedNodes = /* @__PURE__ */ new Set();
|
|
389
|
+
const findNodes = NodeUtils.findNodes(
|
|
390
|
+
element,
|
|
391
|
+
(node) => {
|
|
392
|
+
if (node.nodeType === Node2.TEXT_NODE) {
|
|
378
393
|
const between = _RawSet.expressionGroups(StringUtils.deleteEnter(node.data ?? ""));
|
|
379
|
-
|
|
380
|
-
|
|
394
|
+
const r2 = between?.length > 0 ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
|
|
395
|
+
return r2;
|
|
396
|
+
} else if (node.nodeType === Node2.ELEMENT_NODE) {
|
|
381
397
|
const element2 = node;
|
|
382
398
|
if (element2.hasAttribute(_RawSet.DR_PRE_NAME)) {
|
|
383
|
-
|
|
399
|
+
let r3 = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
|
|
400
|
+
return r3;
|
|
384
401
|
}
|
|
385
402
|
if (element2.hasAttribute(EventManager.attrAttrName)) {
|
|
386
403
|
const script = element2.getAttribute(EventManager.attrAttrName) ?? "";
|
|
387
|
-
const keyValuePairs = Array.from(script.matchAll(/(\w+):\s*([^,}]+)/g)).map((match) => ({
|
|
404
|
+
const keyValuePairs = Array.from(script.matchAll(/(\w+):\s*([^,}]+)/g)).map((match) => ({
|
|
405
|
+
key: match[1],
|
|
406
|
+
value: match[2]
|
|
407
|
+
}));
|
|
388
408
|
(keyValuePairs ?? []).forEach((it) => {
|
|
389
409
|
element2.setAttribute(it.key, "${" + it.value + "}$");
|
|
390
410
|
});
|
|
@@ -405,7 +425,7 @@ const _RawSet = class _RawSet {
|
|
|
405
425
|
const originVariable = variablePath;
|
|
406
426
|
variablePath = variablePath.replace(/#[^#]*#/g, "({})");
|
|
407
427
|
const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);
|
|
408
|
-
const cval =
|
|
428
|
+
const cval = ObjectUtils.Script.evaluateReturn(optionalChainPath, Object.assign(obj));
|
|
409
429
|
if (cval === null) {
|
|
410
430
|
element2.removeAttribute(it);
|
|
411
431
|
} else {
|
|
@@ -417,58 +437,75 @@ const _RawSet = class _RawSet {
|
|
|
417
437
|
return isTargetAttr;
|
|
418
438
|
}).length > 0;
|
|
419
439
|
if (linkVariables.size) {
|
|
420
|
-
element2.setAttribute(
|
|
440
|
+
element2.setAttribute(
|
|
441
|
+
EventManager.linkTargetMapAttrName,
|
|
442
|
+
JSON.stringify(Array.from(linkVariables.entries()))
|
|
443
|
+
);
|
|
421
444
|
}
|
|
422
445
|
if (normalAttrs.size) {
|
|
423
446
|
element2.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));
|
|
424
447
|
}
|
|
425
|
-
const
|
|
426
|
-
return
|
|
448
|
+
const r2 = isAttr || isElement ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
|
|
449
|
+
return r2;
|
|
427
450
|
}
|
|
428
|
-
|
|
451
|
+
const r = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
|
|
452
|
+
return r;
|
|
429
453
|
}
|
|
430
|
-
|
|
454
|
+
);
|
|
431
455
|
const pars = [];
|
|
432
456
|
let currentNode;
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
457
|
+
const name = RandomUtils.uuid();
|
|
458
|
+
for (const currentNode2 of findNodes) {
|
|
459
|
+
processedNodes.add(currentNode2);
|
|
460
|
+
if (currentNode2.nodeType === Node2.TEXT_NODE) {
|
|
461
|
+
const text = currentNode2.textContent ?? "";
|
|
436
462
|
const template = config.window.document?.createElement("template");
|
|
437
463
|
if (!template) break;
|
|
438
464
|
const groups = _RawSet.expressionGroups(text);
|
|
439
|
-
const map = groups.map((it) => ({
|
|
465
|
+
const map = groups.map((it) => ({
|
|
466
|
+
uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`,
|
|
467
|
+
content: it[0],
|
|
468
|
+
regexArr: it
|
|
469
|
+
}));
|
|
440
470
|
let lasterIndex = 0;
|
|
441
471
|
for (let i = 0; i < map.length; i++) {
|
|
442
472
|
const it = map[i];
|
|
443
473
|
const regexArr = it.regexArr;
|
|
444
474
|
const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);
|
|
445
475
|
let type;
|
|
446
|
-
if (
|
|
476
|
+
if (currentNode2.parentNode && currentNode2.parentNode.nodeName.toUpperCase() === "STYLE") {
|
|
447
477
|
type = RawSetType.STYLE_TEXT;
|
|
448
478
|
} else {
|
|
449
479
|
type = RawSetType.TEXT;
|
|
450
480
|
}
|
|
451
|
-
const node = document.createTextNode(preparedText);
|
|
481
|
+
const node = config.window.document.createTextNode(preparedText);
|
|
452
482
|
const startEndPoint = _RawSet.createStartEndPoint({ id: it.uuid, type }, config);
|
|
453
483
|
template.content.append(node);
|
|
454
484
|
template.content.append(startEndPoint.start);
|
|
455
485
|
template.content.append(startEndPoint.end);
|
|
456
486
|
const fragment = config.window.document.createDocumentFragment();
|
|
457
487
|
fragment.append(config.window.document.createTextNode(it.content));
|
|
458
|
-
pars.push(
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
488
|
+
pars.push(
|
|
489
|
+
new _RawSet(
|
|
490
|
+
it.uuid,
|
|
491
|
+
type,
|
|
492
|
+
{
|
|
493
|
+
start: startEndPoint.start,
|
|
494
|
+
node: currentNode2,
|
|
495
|
+
end: startEndPoint.end,
|
|
496
|
+
parent: currentNode2.parentNode
|
|
497
|
+
// thisVariableName: thisVariableName
|
|
498
|
+
},
|
|
499
|
+
{ fragment, config }
|
|
500
|
+
)
|
|
501
|
+
);
|
|
465
502
|
lasterIndex = regexArr.index + it.content.length;
|
|
466
503
|
}
|
|
467
504
|
template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));
|
|
468
|
-
|
|
469
|
-
} else if (
|
|
505
|
+
currentNode2?.parentNode?.replaceChild(template.content, currentNode2);
|
|
506
|
+
} else if (currentNode2.nodeType === Node2.ELEMENT_NODE) {
|
|
470
507
|
const uuid = `${RandomUtils.alphabet(40)}`;
|
|
471
|
-
const element2 =
|
|
508
|
+
const element2 = currentNode2;
|
|
472
509
|
const fragment = config.window.document.createDocumentFragment();
|
|
473
510
|
const elementType = RawSetType.TARGET_ELEMENT;
|
|
474
511
|
const startEndPoint = _RawSet.createStartEndPoint({ node: element2, id: uuid, type: elementType }, config);
|
|
@@ -477,19 +514,25 @@ const _RawSet = class _RawSet {
|
|
|
477
514
|
const isElement = targetElementNames.includes(element2.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase());
|
|
478
515
|
const targetAttrNames = (config.targetAttrs?.map((it) => it.name) ?? []).concat(_RawSet.DR_ATTRIBUTES);
|
|
479
516
|
const isAttr = element2.getAttributeNames().filter((it) => targetAttrNames.includes(it.toLowerCase())).length > 0;
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
fragment.append(
|
|
483
|
-
const rawSet = new _RawSet(
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
517
|
+
currentNode2?.parentNode?.insertBefore(startEndPoint.start, currentNode2);
|
|
518
|
+
currentNode2?.parentNode?.insertBefore(startEndPoint.end, currentNode2.nextSibling);
|
|
519
|
+
fragment.append(currentNode2);
|
|
520
|
+
const rawSet = new _RawSet(
|
|
521
|
+
uuid,
|
|
522
|
+
isElement ? elementType : isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN,
|
|
523
|
+
{
|
|
524
|
+
start: startEndPoint.start,
|
|
525
|
+
node: currentNode2,
|
|
526
|
+
end: startEndPoint.end,
|
|
527
|
+
parent: currentNode2.parentNode
|
|
528
|
+
// thisVariableName: thisVariableName
|
|
529
|
+
},
|
|
530
|
+
{ config, fragment }
|
|
531
|
+
);
|
|
490
532
|
pars.push(rawSet);
|
|
491
533
|
}
|
|
492
534
|
}
|
|
535
|
+
const util = ElementUtils;
|
|
493
536
|
return pars;
|
|
494
537
|
}
|
|
495
538
|
static createStartEndPoint(data, config) {
|
|
@@ -565,13 +608,17 @@ const _RawSet = class _RawSet {
|
|
|
565
608
|
static drItOtherEncoding(element, postFix) {
|
|
566
609
|
const random = RandomUtils.uuid() + postFix;
|
|
567
610
|
const regex = /#it#/g;
|
|
568
|
-
element.querySelectorAll(
|
|
611
|
+
element.querySelectorAll(
|
|
612
|
+
`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`
|
|
613
|
+
).forEach((it) => {
|
|
569
614
|
it.innerHTML = it.innerHTML.replace(regex, random);
|
|
570
615
|
});
|
|
571
616
|
return random;
|
|
572
617
|
}
|
|
573
618
|
static drItOtherDecoding(element, random) {
|
|
574
|
-
element.querySelectorAll(
|
|
619
|
+
element.querySelectorAll(
|
|
620
|
+
`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`
|
|
621
|
+
).forEach((it) => {
|
|
575
622
|
it.innerHTML = it.innerHTML.replace(RegExp(random, "g"), "#it#");
|
|
576
623
|
});
|
|
577
624
|
}
|
|
@@ -712,7 +759,7 @@ const _RawSet = class _RawSet {
|
|
|
712
759
|
const style = _RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);
|
|
713
760
|
targetElement.innerHTML = style + (set.template ?? "");
|
|
714
761
|
} else {
|
|
715
|
-
targetObj =
|
|
762
|
+
targetObj = ObjectUtils.Script.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);
|
|
716
763
|
}
|
|
717
764
|
const componentKey = rawSet.uuid;
|
|
718
765
|
const renderScript = ` /*drThisCreate*/
|
|
@@ -756,7 +803,10 @@ const _RawSet = class _RawSet {
|
|
|
756
803
|
render.attribute = _RawSet.getAttributeObject(element, { script: renderScript, obj, renderData: render });
|
|
757
804
|
render = Object.freeze(render);
|
|
758
805
|
const onCreateDataScript = `return {rootParent: this, render: this.__render}`;
|
|
759
|
-
const onCreateDataParam =
|
|
806
|
+
const onCreateDataParam = ObjectUtils.Script.evaluate(
|
|
807
|
+
onCreateDataScript,
|
|
808
|
+
Object.assign(obj, { __render: render })
|
|
809
|
+
);
|
|
760
810
|
if (isOnCreateRenderData(targetObj)) {
|
|
761
811
|
targetObj?.onCreateRenderData(onCreateDataParam);
|
|
762
812
|
}
|
|
@@ -766,7 +816,10 @@ const _RawSet = class _RawSet {
|
|
|
766
816
|
const onCreate = element.getAttribute(_RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
|
|
767
817
|
let createParam = [];
|
|
768
818
|
if (onCreate) {
|
|
769
|
-
createParam =
|
|
819
|
+
createParam = ObjectUtils.Script.evaluateReturn(
|
|
820
|
+
{ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) },
|
|
821
|
+
obj
|
|
822
|
+
);
|
|
770
823
|
if (!Array.isArray(createParam)) {
|
|
771
824
|
createParam = [createParam];
|
|
772
825
|
}
|
|
@@ -787,12 +840,13 @@ const _RawSet = class _RawSet {
|
|
|
787
840
|
const oninit = element.getAttribute(_RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME);
|
|
788
841
|
if (oninit) {
|
|
789
842
|
const script = `${renderScript} ${oninit} `;
|
|
790
|
-
|
|
843
|
+
ObjectUtils.Script.evaluate(script, Object.assign(obj, { __render: render }));
|
|
791
844
|
}
|
|
792
845
|
targetElement.querySelectorAll(EventManager.attrNames.map((it) => `[${it}]`).join(",")).forEach((it) => {
|
|
793
846
|
it.setAttribute(EventManager.ownerVariablePathAttrName, "this");
|
|
794
847
|
});
|
|
795
848
|
const componentNameReplaceKey = RandomUtils.uuid();
|
|
849
|
+
rawSet.point.innerHTML = element.innerHTML;
|
|
796
850
|
const innerHTMLName = targetElement.getAttribute(_RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? "innerHTML";
|
|
797
851
|
if (innerHTMLName) {
|
|
798
852
|
_RawSet.replaceInnerHTML(targetElement, { asIs: `#${innerHTMLName}#`, toBe: element.innerHTML });
|
|
@@ -803,8 +857,14 @@ const _RawSet = class _RawSet {
|
|
|
803
857
|
if (optionThisName) {
|
|
804
858
|
targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);
|
|
805
859
|
}
|
|
806
|
-
const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {
|
|
807
|
-
|
|
860
|
+
const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {
|
|
861
|
+
config,
|
|
862
|
+
otherReplaceVariablePath: rawSet.findNearThisPath()
|
|
863
|
+
});
|
|
864
|
+
const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, {
|
|
865
|
+
config,
|
|
866
|
+
otherReplaceVariablePath: rawSet.findParentThisPath()
|
|
867
|
+
});
|
|
808
868
|
const vars = this.drVarEncoding(targetElement, drVarOption);
|
|
809
869
|
this.drVarDecoding(targetElement, vars);
|
|
810
870
|
this.drThisDecoding(targetElement, { asIs: thisRandom, toBe: "@this@" });
|
|
@@ -847,7 +907,13 @@ const _RawSet = class _RawSet {
|
|
|
847
907
|
};
|
|
848
908
|
return targetAttribute;
|
|
849
909
|
}
|
|
850
|
-
static createComponentTargetElement({
|
|
910
|
+
static createComponentTargetElement({
|
|
911
|
+
name,
|
|
912
|
+
objFactory,
|
|
913
|
+
template = "",
|
|
914
|
+
styles = [],
|
|
915
|
+
noStrip
|
|
916
|
+
}) {
|
|
851
917
|
const targetElement = {
|
|
852
918
|
name,
|
|
853
919
|
styles,
|
|
@@ -897,7 +963,10 @@ const _RawSet = class _RawSet {
|
|
|
897
963
|
render.attribute = _RawSet.getAttributeObject(element, { script: renderScript, obj, renderData: render });
|
|
898
964
|
render = Object.freeze(render);
|
|
899
965
|
if (constructor) {
|
|
900
|
-
let param =
|
|
966
|
+
let param = ObjectUtils.Script.evaluateReturn(
|
|
967
|
+
{ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) },
|
|
968
|
+
Object.assign(obj, { __render: render })
|
|
969
|
+
) ?? [];
|
|
901
970
|
if (!Array.isArray(param)) {
|
|
902
971
|
param = [param];
|
|
903
972
|
}
|
|
@@ -923,7 +992,15 @@ const _RawSet = class _RawSet {
|
|
|
923
992
|
applayTemplate = (this.template ?? "").replace(RegExp(`#${innerHTMLName}#`, "g"), applayTemplate);
|
|
924
993
|
const style = _RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);
|
|
925
994
|
element.innerHTML = style + (applayTemplate ?? "");
|
|
926
|
-
let data = await _RawSet.drThisCreate(
|
|
995
|
+
let data = await _RawSet.drThisCreate(
|
|
996
|
+
rawSet,
|
|
997
|
+
element,
|
|
998
|
+
`this.__domrender_components.${rawSet.uuid}`,
|
|
999
|
+
"",
|
|
1000
|
+
!noStrip,
|
|
1001
|
+
obj,
|
|
1002
|
+
config
|
|
1003
|
+
);
|
|
927
1004
|
if (data && innerHTMLThisRandom) {
|
|
928
1005
|
const template2 = config.window.document.createElement("template");
|
|
929
1006
|
template2.content.append(data);
|
|
@@ -964,7 +1041,10 @@ const _RawSet = class _RawSet {
|
|
|
964
1041
|
const normalAttribute = attribute[EventManager.normalAttrMapAttrName];
|
|
965
1042
|
if (normalAttribute) {
|
|
966
1043
|
new Map(JSON.parse(normalAttribute)).forEach((v, k) => {
|
|
967
|
-
const cval =
|
|
1044
|
+
const cval = ObjectUtils.Script.evaluateReturn(
|
|
1045
|
+
{ bodyScript: config.script, returnScript: v },
|
|
1046
|
+
Object.assign(config.obj, config.renderData ? { __render: config.renderData } : void 0)
|
|
1047
|
+
);
|
|
968
1048
|
attribute[k] = cval;
|
|
969
1049
|
});
|
|
970
1050
|
}
|