@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
|
@@ -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,8 @@ 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
|
+
import { ConvertUtils } from "@dooboostore/core/convert/ConvertUtils";
|
|
35
36
|
const _RawSet = class _RawSet {
|
|
36
37
|
constructor(uuid, type, point, dataSet, detect) {
|
|
37
38
|
this.uuid = uuid;
|
|
@@ -43,14 +44,14 @@ const _RawSet = class _RawSet {
|
|
|
43
44
|
const path = this.findNearThisPath(rawSet);
|
|
44
45
|
if (path) {
|
|
45
46
|
const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);
|
|
46
|
-
return
|
|
47
|
+
return ObjectUtils.Script.evaluateReturn(optionalPath, obj);
|
|
47
48
|
}
|
|
48
49
|
};
|
|
49
50
|
this.findParentThis = (obj, rawSet = this) => {
|
|
50
51
|
const path = this.findParentThisPath(rawSet);
|
|
51
52
|
if (path) {
|
|
52
53
|
const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);
|
|
53
|
-
return
|
|
54
|
+
return ObjectUtils.Script.evaluateReturn(optionalPath, obj);
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
57
|
this.findNearThisPath = (rawSet = this) => {
|
|
@@ -65,11 +66,10 @@ const _RawSet = class _RawSet {
|
|
|
65
66
|
const paths = [];
|
|
66
67
|
const findPath = (rawSet2) => {
|
|
67
68
|
if (rawSet2 && rawSet2.point) {
|
|
68
|
-
if ("getAttribute" in rawSet2.point.start && rawSet2.point.start.getAttribute("this-path")) {
|
|
69
|
+
if (rawSet2.point?.start && "getAttribute" in rawSet2.point.start && rawSet2.point.start.getAttribute("this-path")) {
|
|
69
70
|
paths.push(rawSet2.point.start.getAttribute("this-path"));
|
|
70
71
|
}
|
|
71
|
-
if (rawSet2.point.parentRawSet)
|
|
72
|
-
findPath(rawSet2.point.parentRawSet);
|
|
72
|
+
if (rawSet2.point.parentRawSet) findPath(rawSet2.point.parentRawSet);
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
findPath(rawSet);
|
|
@@ -78,7 +78,7 @@ const _RawSet = class _RawSet {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
get isConnected() {
|
|
81
|
-
return this.point.start.isConnected && this.point.end.isConnected;
|
|
81
|
+
return this.point && this.point.start && this.point.end && this.point.start.isConnected && this.point.end.isConnected;
|
|
82
82
|
}
|
|
83
83
|
// 중요
|
|
84
84
|
getUsingTriggerVariables(config) {
|
|
@@ -93,12 +93,18 @@ const _RawSet = class _RawSet {
|
|
|
93
93
|
}
|
|
94
94
|
} else if (cNode.nodeType === Node.ELEMENT_NODE) {
|
|
95
95
|
const element = cNode;
|
|
96
|
-
const targetAttrNames = (config?.targetAttrs?.map((it) => it.name) ?? []).concat(
|
|
96
|
+
const targetAttrNames = (config?.targetAttrs?.map((it) => it.name) ?? []).concat(
|
|
97
|
+
_RawSet.DR_ATTRIBUTES,
|
|
98
|
+
_RawSet.DR_DETECT_FILTER_OPTIONNAME,
|
|
99
|
+
_RawSet.DR_DETECT_IF_OPTIONNAME,
|
|
100
|
+
_RawSet.DR_DETECT_ATTR_OPTIONNAME
|
|
101
|
+
);
|
|
97
102
|
const targetScripts = targetAttrNames.map((it) => element.getAttribute(it)).filter((it) => it).map((it) => `(${it})`);
|
|
98
103
|
const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);
|
|
99
104
|
if (targetAttrMap) {
|
|
100
105
|
new Map(JSON.parse(targetAttrMap)).forEach((v, k) => {
|
|
101
|
-
|
|
106
|
+
const variablePaths = v.variablePaths;
|
|
107
|
+
variablePaths.forEach((it) => targetScripts.push(`(${it.inner})`));
|
|
102
108
|
});
|
|
103
109
|
}
|
|
104
110
|
script = targetScripts.join(";");
|
|
@@ -114,6 +120,8 @@ const _RawSet = class _RawSet {
|
|
|
114
120
|
return usingTriggerVariables;
|
|
115
121
|
}
|
|
116
122
|
// 중요 render 처리 부분
|
|
123
|
+
// public async render(obj: any, config: DomRenderConfig): Promise<RawSet[]> {
|
|
124
|
+
// }
|
|
117
125
|
async render(obj, config) {
|
|
118
126
|
const genNode = config.window.document.importNode(this.dataSet.fragment, true);
|
|
119
127
|
const raws = [];
|
|
@@ -121,6 +129,7 @@ const _RawSet = class _RawSet {
|
|
|
121
129
|
const onElementInitCallBacks = [];
|
|
122
130
|
const onThisComponentSetCallBacks = [];
|
|
123
131
|
const drAttrs = [];
|
|
132
|
+
const executedOperators = [];
|
|
124
133
|
for (const cNode of Array.from(genNode.childNodes.values())) {
|
|
125
134
|
let attribute = {};
|
|
126
135
|
if (cNode.nodeType === Node.ELEMENT_NODE) {
|
|
@@ -134,7 +143,7 @@ const _RawSet = class _RawSet {
|
|
|
134
143
|
element: cNode,
|
|
135
144
|
attribute,
|
|
136
145
|
rootObject: obj,
|
|
137
|
-
scriptUtils:
|
|
146
|
+
scriptUtils: ObjectUtils.Script,
|
|
138
147
|
nearThis: this.findNearThis(obj),
|
|
139
148
|
parentThis: this.findParentThis(obj),
|
|
140
149
|
bindScript: ` /** render **/
|
|
@@ -156,12 +165,18 @@ const _RawSet = class _RawSet {
|
|
|
156
165
|
const runText = _RawSet.expressionGroups(textContent)[0][1];
|
|
157
166
|
let newNode;
|
|
158
167
|
if (textContent?.startsWith("#")) {
|
|
159
|
-
const r =
|
|
168
|
+
const r = ObjectUtils.Script.evaluate(
|
|
169
|
+
`${__render.bindScript} return ${runText}`,
|
|
170
|
+
Object.assign(obj, { __render })
|
|
171
|
+
);
|
|
160
172
|
const template = config.window.document.createElement("template");
|
|
161
173
|
template.innerHTML = r;
|
|
162
174
|
newNode = template.content;
|
|
163
175
|
} else {
|
|
164
|
-
const r =
|
|
176
|
+
const r = ObjectUtils.Script.evaluate(
|
|
177
|
+
`${__render.bindScript} return ${runText}`,
|
|
178
|
+
Object.assign(obj, { __render })
|
|
179
|
+
);
|
|
165
180
|
newNode = config.window.document.createTextNode(r);
|
|
166
181
|
}
|
|
167
182
|
cNode.parentNode?.replaceChild(newNode, cNode);
|
|
@@ -200,30 +215,148 @@ const _RawSet = class _RawSet {
|
|
|
200
215
|
};
|
|
201
216
|
drAttrs.push(drAttr);
|
|
202
217
|
const operators = [
|
|
203
|
-
new DrPre(
|
|
204
|
-
|
|
218
|
+
new DrPre(
|
|
219
|
+
this,
|
|
220
|
+
__render,
|
|
221
|
+
{ raws, fag },
|
|
222
|
+
{ element, attrName: _RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr },
|
|
223
|
+
{ config, obj, operatorAround: config.operatorAround?.drPre },
|
|
224
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
225
|
+
),
|
|
226
|
+
new Dr(
|
|
227
|
+
this,
|
|
228
|
+
__render,
|
|
229
|
+
{ raws, fag },
|
|
230
|
+
{ element, attrName: _RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr },
|
|
231
|
+
{ config, obj, operatorAround: config.operatorAround?.dr },
|
|
232
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
233
|
+
),
|
|
205
234
|
// new Dr(this, __render, {raws, fag}, {element, attrName: EventManager.onRenderedInitAttrName, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),
|
|
206
|
-
new DrIf(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
new
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
235
|
+
new DrIf(
|
|
236
|
+
this,
|
|
237
|
+
__render,
|
|
238
|
+
{ raws, fag },
|
|
239
|
+
{ element, attrName: _RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr },
|
|
240
|
+
{ config, obj, operatorAround: config.operatorAround?.drIf },
|
|
241
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
242
|
+
),
|
|
243
|
+
new DrStripElement(
|
|
244
|
+
this,
|
|
245
|
+
__render,
|
|
246
|
+
{ raws, fag },
|
|
247
|
+
{ element, attrName: _RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr },
|
|
248
|
+
{ config, obj, operatorAround: config.operatorAround?.drThis },
|
|
249
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
250
|
+
),
|
|
251
|
+
new DrThis(
|
|
252
|
+
this,
|
|
253
|
+
__render,
|
|
254
|
+
{ raws, fag },
|
|
255
|
+
{ element, attrName: _RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr },
|
|
256
|
+
{ config, obj, operatorAround: config.operatorAround?.drThis },
|
|
257
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
258
|
+
),
|
|
259
|
+
new DrForm(
|
|
260
|
+
this,
|
|
261
|
+
__render,
|
|
262
|
+
{ raws, fag },
|
|
263
|
+
{ element, attrName: _RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr },
|
|
264
|
+
{ config, obj, operatorAround: config.operatorAround?.drForm },
|
|
265
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
266
|
+
),
|
|
267
|
+
new DrInnerText(
|
|
268
|
+
this,
|
|
269
|
+
__render,
|
|
270
|
+
{ raws, fag },
|
|
271
|
+
{ element, attrName: _RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr },
|
|
272
|
+
{ config, obj, operatorAround: config.operatorAround?.drInnerText },
|
|
273
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
274
|
+
),
|
|
275
|
+
new DrInnerHTML(
|
|
276
|
+
this,
|
|
277
|
+
__render,
|
|
278
|
+
{ raws, fag },
|
|
279
|
+
{ element, attrName: _RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr },
|
|
280
|
+
{ config, obj, operatorAround: config.operatorAround?.drInnerHTML },
|
|
281
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
282
|
+
),
|
|
283
|
+
new DrFor(
|
|
284
|
+
this,
|
|
285
|
+
__render,
|
|
286
|
+
{ raws, fag },
|
|
287
|
+
{ element, attrName: _RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr },
|
|
288
|
+
{ config, obj, operatorAround: config.operatorAround?.drFor },
|
|
289
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
290
|
+
),
|
|
291
|
+
new DrForOf(
|
|
292
|
+
this,
|
|
293
|
+
__render,
|
|
294
|
+
{ raws, fag },
|
|
295
|
+
{ element, attrName: _RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr },
|
|
296
|
+
{ config, obj, operatorAround: config.operatorAround?.drForOf },
|
|
297
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
298
|
+
),
|
|
299
|
+
new DrThisProperty(
|
|
300
|
+
this,
|
|
301
|
+
__render,
|
|
302
|
+
{ raws, fag },
|
|
303
|
+
{ element, attrName: _RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr },
|
|
304
|
+
{ config, obj, operatorAround: config.operatorAround?.drThisProperty },
|
|
305
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
306
|
+
),
|
|
307
|
+
new DrAppender(
|
|
308
|
+
this,
|
|
309
|
+
__render,
|
|
310
|
+
{ raws, fag },
|
|
311
|
+
{ element, attrName: _RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr },
|
|
312
|
+
{ config, obj, operatorAround: config.operatorAround?.drAppender },
|
|
313
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
314
|
+
),
|
|
315
|
+
new DrRepeat(
|
|
316
|
+
this,
|
|
317
|
+
__render,
|
|
318
|
+
{ raws, fag },
|
|
319
|
+
{ element, attrName: _RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr },
|
|
320
|
+
{ config, obj, operatorAround: config.operatorAround?.drRepeat },
|
|
321
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
322
|
+
),
|
|
323
|
+
new DrTargetElementIsElement(
|
|
324
|
+
this,
|
|
325
|
+
__render,
|
|
326
|
+
{ raws, fag },
|
|
327
|
+
{
|
|
328
|
+
element,
|
|
329
|
+
attrName: _RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME,
|
|
330
|
+
attr: drAttr.drReplaceTargetElementIs,
|
|
331
|
+
attrs: drAttr
|
|
332
|
+
},
|
|
333
|
+
{ config, obj },
|
|
334
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
335
|
+
),
|
|
336
|
+
new DrTargetElement(
|
|
337
|
+
this,
|
|
338
|
+
__render,
|
|
339
|
+
{ raws, fag },
|
|
340
|
+
{ element, attrs: drAttr },
|
|
341
|
+
{ config, obj },
|
|
342
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
343
|
+
),
|
|
344
|
+
new DrTargetAttr(
|
|
345
|
+
this,
|
|
346
|
+
__render,
|
|
347
|
+
{ raws, fag },
|
|
348
|
+
{ element, attrs: drAttr },
|
|
349
|
+
{ config, obj },
|
|
350
|
+
{ onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }
|
|
351
|
+
)
|
|
220
352
|
];
|
|
221
353
|
for (const operator of operators) {
|
|
222
354
|
const state = await operator.start();
|
|
223
355
|
if (state === ExecuteState.EXECUTE) {
|
|
356
|
+
executedOperators.push(operator);
|
|
224
357
|
break;
|
|
225
358
|
} else if (state === ExecuteState.STOP) {
|
|
226
|
-
return raws;
|
|
359
|
+
return { raws, executedOperators };
|
|
227
360
|
}
|
|
228
361
|
}
|
|
229
362
|
}
|
|
@@ -243,21 +376,24 @@ const _RawSet = class _RawSet {
|
|
|
243
376
|
fag: genNode,
|
|
244
377
|
scripts: EventManager.setBindProperty(config?.scripts, obj)
|
|
245
378
|
});
|
|
246
|
-
|
|
379
|
+
ObjectUtils.Script.evaluate(
|
|
380
|
+
`
|
|
247
381
|
const ${EventManager.FAG_VARNAME} = this.__render.fag;
|
|
248
382
|
const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;
|
|
249
383
|
const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
|
|
250
|
-
${it.drCompleteOption}`,
|
|
384
|
+
${it.drCompleteOption}`,
|
|
385
|
+
Object.assign(obj, { __render: render })
|
|
386
|
+
);
|
|
251
387
|
}
|
|
252
388
|
});
|
|
253
389
|
for (const it of onThisComponentSetCallBacks) {
|
|
254
390
|
if (isOnInitRender(it.obj)) {
|
|
255
|
-
it.obj?.onInitRender?.({}, this);
|
|
391
|
+
await it.obj?.onInitRender?.({}, this);
|
|
256
392
|
}
|
|
257
393
|
}
|
|
258
394
|
for (const it of onElementInitCallBacks) {
|
|
259
395
|
if (isOnInitRender(this.dataSet.render?.currentThis)) {
|
|
260
|
-
this.dataSet.render.currentThis.onInitRender({}, this);
|
|
396
|
+
await this.dataSet.render.currentThis.onInitRender({}, this);
|
|
261
397
|
}
|
|
262
398
|
config?.onElementInit?.(it.name, obj, this, it.targetElement);
|
|
263
399
|
}
|
|
@@ -275,7 +411,7 @@ const _RawSet = class _RawSet {
|
|
|
275
411
|
}
|
|
276
412
|
});
|
|
277
413
|
}
|
|
278
|
-
return raws;
|
|
414
|
+
return { raws, executedOperators };
|
|
279
415
|
}
|
|
280
416
|
// 중요 스타일 적용 부분
|
|
281
417
|
static generateRuleSelector(start, end, sit) {
|
|
@@ -308,9 +444,7 @@ const _RawSet = class _RawSet {
|
|
|
308
444
|
const isRoot = rule.selector.includes(":root");
|
|
309
445
|
if (!isRoot) {
|
|
310
446
|
const selectors = rule.selector.split(",").map((s) => s.trim());
|
|
311
|
-
const transformedSelectors = selectors.map(
|
|
312
|
-
(selector) => this.generateRuleSelector(start, end, selector)
|
|
313
|
-
);
|
|
447
|
+
const transformedSelectors = selectors.map((selector) => this.generateRuleSelector(start, end, selector));
|
|
314
448
|
rule.selector = transformedSelectors.join(", ");
|
|
315
449
|
}
|
|
316
450
|
} else if (isAtRule(rule)) {
|
|
@@ -322,9 +456,7 @@ const _RawSet = class _RawSet {
|
|
|
322
456
|
rule.children.forEach((childRule) => {
|
|
323
457
|
if (isStyleRule(childRule)) {
|
|
324
458
|
const selectors = childRule.selector.split(",").map((s) => s.trim());
|
|
325
|
-
const transformedSelectors = selectors.map(
|
|
326
|
-
(selector) => this.generateRuleSelector(start, end, selector)
|
|
327
|
-
);
|
|
459
|
+
const transformedSelectors = selectors.map((selector) => this.generateRuleSelector(start, end, selector));
|
|
328
460
|
childRule.selector = transformedSelectors.join(", ");
|
|
329
461
|
}
|
|
330
462
|
});
|
|
@@ -342,7 +474,11 @@ const _RawSet = class _RawSet {
|
|
|
342
474
|
return styleBody;
|
|
343
475
|
}
|
|
344
476
|
applyEvent(obj, fragment = this.dataSet.fragment, config) {
|
|
345
|
-
this.dataSet.config.eventManager.applyEvent(
|
|
477
|
+
this.dataSet.config.eventManager.applyEvent(
|
|
478
|
+
obj,
|
|
479
|
+
this.dataSet.config.eventManager.findAttrElements(fragment, config),
|
|
480
|
+
config
|
|
481
|
+
);
|
|
346
482
|
}
|
|
347
483
|
onRenderedEvent(obj, nodes, config) {
|
|
348
484
|
this.dataSet.config.eventManager.onRenderedEvent(obj, nodes, config);
|
|
@@ -359,7 +495,10 @@ const _RawSet = class _RawSet {
|
|
|
359
495
|
getDrAppendAttributeAndDelete(element, obj) {
|
|
360
496
|
let data = element.getAttribute(_RawSet.DR_APPENDER_NAME);
|
|
361
497
|
if (data && !/\[.+\]/g.test(data)) {
|
|
362
|
-
const currentIndex =
|
|
498
|
+
const currentIndex = ObjectUtils.Script.evaluateReturn(
|
|
499
|
+
`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`,
|
|
500
|
+
obj
|
|
501
|
+
);
|
|
363
502
|
data = `${data}[${currentIndex}]`;
|
|
364
503
|
element.setAttribute(_RawSet.DR_APPENDER_NAME, data);
|
|
365
504
|
}
|
|
@@ -372,19 +511,28 @@ const _RawSet = class _RawSet {
|
|
|
372
511
|
}
|
|
373
512
|
// 중요 important
|
|
374
513
|
static checkPointCreates(element, obj, config) {
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
514
|
+
const NodeFilter2 = config.window.NodeFilter;
|
|
515
|
+
const Node2 = config.window.Node;
|
|
516
|
+
const processedNodes = /* @__PURE__ */ new Set();
|
|
517
|
+
const findNodes = NodeUtils.findNodes(
|
|
518
|
+
element,
|
|
519
|
+
(node) => {
|
|
520
|
+
if (node.nodeType === Node2.TEXT_NODE) {
|
|
378
521
|
const between = _RawSet.expressionGroups(StringUtils.deleteEnter(node.data ?? ""));
|
|
379
|
-
|
|
380
|
-
|
|
522
|
+
const r2 = between?.length > 0 ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
|
|
523
|
+
return r2;
|
|
524
|
+
} else if (node.nodeType === Node2.ELEMENT_NODE) {
|
|
381
525
|
const element2 = node;
|
|
382
526
|
if (element2.hasAttribute(_RawSet.DR_PRE_NAME)) {
|
|
383
|
-
|
|
527
|
+
let r3 = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_SKIP_CHILDREN;
|
|
528
|
+
return r3;
|
|
384
529
|
}
|
|
385
530
|
if (element2.hasAttribute(EventManager.attrAttrName)) {
|
|
386
531
|
const script = element2.getAttribute(EventManager.attrAttrName) ?? "";
|
|
387
|
-
const keyValuePairs = Array.from(script.matchAll(/(\w+):\s*([^,}]+)/g)).map((match) => ({
|
|
532
|
+
const keyValuePairs = Array.from(script.matchAll(/(\w+):\s*([^,}]+)/g)).map((match) => ({
|
|
533
|
+
key: match[1],
|
|
534
|
+
value: match[2]
|
|
535
|
+
}));
|
|
388
536
|
(keyValuePairs ?? []).forEach((it) => {
|
|
389
537
|
element2.setAttribute(it.key, "${" + it.value + "}$");
|
|
390
538
|
});
|
|
@@ -396,79 +544,102 @@ const _RawSet = class _RawSet {
|
|
|
396
544
|
const normalAttrs = /* @__PURE__ */ new Map();
|
|
397
545
|
const linkVariables = /* @__PURE__ */ new Map();
|
|
398
546
|
const linkNames = EventManager.linkAttrs.map((it) => it.name);
|
|
399
|
-
const isAttr = element2.getAttributeNames().filter((it) => {
|
|
547
|
+
const isAttr = element2.getAttributeNames().filter((it) => !EventManager.noDetectAttr.includes(it)).filter((it) => {
|
|
400
548
|
const value = element2.getAttribute(it);
|
|
401
549
|
if (value && linkNames.includes(it)) {
|
|
402
550
|
linkVariables.set(it, value);
|
|
403
551
|
} else if (value && _RawSet.isExpression(value)) {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
552
|
+
const variablePaths = _RawSet.expressionGroups(value).map((it2) => ({
|
|
553
|
+
origin: it2[0],
|
|
554
|
+
inner: it2[1]
|
|
555
|
+
}));
|
|
556
|
+
let targetScript = value;
|
|
557
|
+
variablePaths.forEach((it2) => {
|
|
558
|
+
let r3 = it2.inner.replace(/#[^#]*#/g, "({})");
|
|
559
|
+
r3 = ObjectUtils.Path.toOptionalChainPath(r3);
|
|
560
|
+
targetScript = targetScript.replaceAll(it2.origin, `\${${r3}}`);
|
|
561
|
+
});
|
|
562
|
+
const cval = ObjectUtils.Script.evaluateReturn("`" + targetScript + "`", Object.assign(obj));
|
|
409
563
|
if (cval === null) {
|
|
410
564
|
element2.removeAttribute(it);
|
|
411
565
|
} else {
|
|
412
566
|
element2.setAttribute(it, cval);
|
|
413
567
|
}
|
|
414
|
-
normalAttrs.set(it,
|
|
568
|
+
normalAttrs.set(it, { originalAttrValue: value, variablePaths });
|
|
415
569
|
}
|
|
416
570
|
const isTargetAttr = targetAttrNames.includes(it.toLowerCase());
|
|
417
571
|
return isTargetAttr;
|
|
418
572
|
}).length > 0;
|
|
419
573
|
if (linkVariables.size) {
|
|
420
|
-
element2.setAttribute(
|
|
574
|
+
element2.setAttribute(
|
|
575
|
+
EventManager.linkTargetMapAttrName,
|
|
576
|
+
JSON.stringify(Array.from(linkVariables.entries()))
|
|
577
|
+
);
|
|
421
578
|
}
|
|
422
579
|
if (normalAttrs.size) {
|
|
423
580
|
element2.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));
|
|
424
581
|
}
|
|
425
|
-
const
|
|
426
|
-
return
|
|
582
|
+
const r2 = isAttr || isElement ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
|
|
583
|
+
return r2;
|
|
427
584
|
}
|
|
428
|
-
|
|
585
|
+
const r = NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
|
|
586
|
+
return r;
|
|
429
587
|
}
|
|
430
|
-
|
|
588
|
+
);
|
|
431
589
|
const pars = [];
|
|
432
590
|
let currentNode;
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
591
|
+
const name = RandomUtils.uuid();
|
|
592
|
+
for (const currentNode2 of findNodes) {
|
|
593
|
+
processedNodes.add(currentNode2);
|
|
594
|
+
if (currentNode2.nodeType === Node2.TEXT_NODE) {
|
|
595
|
+
const text = currentNode2.textContent ?? "";
|
|
436
596
|
const template = config.window.document?.createElement("template");
|
|
437
597
|
if (!template) break;
|
|
438
598
|
const groups = _RawSet.expressionGroups(text);
|
|
439
|
-
const map = groups.map((it) => ({
|
|
599
|
+
const map = groups.map((it) => ({
|
|
600
|
+
uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`,
|
|
601
|
+
content: it[0],
|
|
602
|
+
regexArr: it
|
|
603
|
+
}));
|
|
440
604
|
let lasterIndex = 0;
|
|
441
605
|
for (let i = 0; i < map.length; i++) {
|
|
442
606
|
const it = map[i];
|
|
443
607
|
const regexArr = it.regexArr;
|
|
444
608
|
const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);
|
|
445
609
|
let type;
|
|
446
|
-
if (
|
|
610
|
+
if (currentNode2.parentNode && currentNode2.parentNode.nodeName.toUpperCase() === "STYLE") {
|
|
447
611
|
type = RawSetType.STYLE_TEXT;
|
|
448
612
|
} else {
|
|
449
613
|
type = RawSetType.TEXT;
|
|
450
614
|
}
|
|
451
|
-
const node = document.createTextNode(preparedText);
|
|
615
|
+
const node = config.window.document.createTextNode(preparedText);
|
|
452
616
|
const startEndPoint = _RawSet.createStartEndPoint({ id: it.uuid, type }, config);
|
|
453
617
|
template.content.append(node);
|
|
454
618
|
template.content.append(startEndPoint.start);
|
|
455
619
|
template.content.append(startEndPoint.end);
|
|
456
620
|
const fragment = config.window.document.createDocumentFragment();
|
|
457
621
|
fragment.append(config.window.document.createTextNode(it.content));
|
|
458
|
-
pars.push(
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
622
|
+
pars.push(
|
|
623
|
+
new _RawSet(
|
|
624
|
+
it.uuid,
|
|
625
|
+
type,
|
|
626
|
+
{
|
|
627
|
+
start: startEndPoint.start,
|
|
628
|
+
node: currentNode2,
|
|
629
|
+
end: startEndPoint.end,
|
|
630
|
+
parent: currentNode2.parentNode
|
|
631
|
+
// thisVariableName: thisVariableName
|
|
632
|
+
},
|
|
633
|
+
{ fragment, config }
|
|
634
|
+
)
|
|
635
|
+
);
|
|
465
636
|
lasterIndex = regexArr.index + it.content.length;
|
|
466
637
|
}
|
|
467
638
|
template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));
|
|
468
|
-
|
|
469
|
-
} else if (
|
|
639
|
+
currentNode2?.parentNode?.replaceChild(template.content, currentNode2);
|
|
640
|
+
} else if (currentNode2.nodeType === Node2.ELEMENT_NODE) {
|
|
470
641
|
const uuid = `${RandomUtils.alphabet(40)}`;
|
|
471
|
-
const element2 =
|
|
642
|
+
const element2 = currentNode2;
|
|
472
643
|
const fragment = config.window.document.createDocumentFragment();
|
|
473
644
|
const elementType = RawSetType.TARGET_ELEMENT;
|
|
474
645
|
const startEndPoint = _RawSet.createStartEndPoint({ node: element2, id: uuid, type: elementType }, config);
|
|
@@ -477,19 +648,25 @@ const _RawSet = class _RawSet {
|
|
|
477
648
|
const isElement = targetElementNames.includes(element2.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase());
|
|
478
649
|
const targetAttrNames = (config.targetAttrs?.map((it) => it.name) ?? []).concat(_RawSet.DR_ATTRIBUTES);
|
|
479
650
|
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
|
-
|
|
651
|
+
currentNode2?.parentNode?.insertBefore(startEndPoint.start, currentNode2);
|
|
652
|
+
currentNode2?.parentNode?.insertBefore(startEndPoint.end, currentNode2.nextSibling);
|
|
653
|
+
fragment.append(currentNode2);
|
|
654
|
+
const rawSet = new _RawSet(
|
|
655
|
+
uuid,
|
|
656
|
+
isElement ? elementType : isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN,
|
|
657
|
+
{
|
|
658
|
+
start: startEndPoint.start,
|
|
659
|
+
node: currentNode2,
|
|
660
|
+
end: startEndPoint.end,
|
|
661
|
+
parent: currentNode2.parentNode
|
|
662
|
+
// thisVariableName: thisVariableName
|
|
663
|
+
},
|
|
664
|
+
{ config, fragment }
|
|
665
|
+
);
|
|
490
666
|
pars.push(rawSet);
|
|
491
667
|
}
|
|
492
668
|
}
|
|
669
|
+
const util = ElementUtils;
|
|
493
670
|
return pars;
|
|
494
671
|
}
|
|
495
672
|
static createStartEndPoint(data, config) {
|
|
@@ -565,13 +742,17 @@ const _RawSet = class _RawSet {
|
|
|
565
742
|
static drItOtherEncoding(element, postFix) {
|
|
566
743
|
const random = RandomUtils.uuid() + postFix;
|
|
567
744
|
const regex = /#it#/g;
|
|
568
|
-
element.querySelectorAll(
|
|
745
|
+
element.querySelectorAll(
|
|
746
|
+
`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`
|
|
747
|
+
).forEach((it) => {
|
|
569
748
|
it.innerHTML = it.innerHTML.replace(regex, random);
|
|
570
749
|
});
|
|
571
750
|
return random;
|
|
572
751
|
}
|
|
573
752
|
static drItOtherDecoding(element, random) {
|
|
574
|
-
element.querySelectorAll(
|
|
753
|
+
element.querySelectorAll(
|
|
754
|
+
`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`
|
|
755
|
+
).forEach((it) => {
|
|
575
756
|
it.innerHTML = it.innerHTML.replace(RegExp(random, "g"), "#it#");
|
|
576
757
|
});
|
|
577
758
|
}
|
|
@@ -712,7 +893,7 @@ const _RawSet = class _RawSet {
|
|
|
712
893
|
const style = _RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);
|
|
713
894
|
targetElement.innerHTML = style + (set.template ?? "");
|
|
714
895
|
} else {
|
|
715
|
-
targetObj =
|
|
896
|
+
targetObj = ObjectUtils.Script.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);
|
|
716
897
|
}
|
|
717
898
|
const componentKey = rawSet.uuid;
|
|
718
899
|
const renderScript = ` /*drThisCreate*/
|
|
@@ -756,7 +937,10 @@ const _RawSet = class _RawSet {
|
|
|
756
937
|
render.attribute = _RawSet.getAttributeObject(element, { script: renderScript, obj, renderData: render });
|
|
757
938
|
render = Object.freeze(render);
|
|
758
939
|
const onCreateDataScript = `return {rootParent: this, render: this.__render}`;
|
|
759
|
-
const onCreateDataParam =
|
|
940
|
+
const onCreateDataParam = ObjectUtils.Script.evaluate(
|
|
941
|
+
onCreateDataScript,
|
|
942
|
+
Object.assign(obj, { __render: render })
|
|
943
|
+
);
|
|
760
944
|
if (isOnCreateRenderData(targetObj)) {
|
|
761
945
|
targetObj?.onCreateRenderData(onCreateDataParam);
|
|
762
946
|
}
|
|
@@ -766,7 +950,10 @@ const _RawSet = class _RawSet {
|
|
|
766
950
|
const onCreate = element.getAttribute(_RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
|
|
767
951
|
let createParam = [];
|
|
768
952
|
if (onCreate) {
|
|
769
|
-
createParam =
|
|
953
|
+
createParam = ObjectUtils.Script.evaluateReturn(
|
|
954
|
+
{ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) },
|
|
955
|
+
obj
|
|
956
|
+
);
|
|
770
957
|
if (!Array.isArray(createParam)) {
|
|
771
958
|
createParam = [createParam];
|
|
772
959
|
}
|
|
@@ -787,15 +974,38 @@ const _RawSet = class _RawSet {
|
|
|
787
974
|
const oninit = element.getAttribute(_RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME);
|
|
788
975
|
if (oninit) {
|
|
789
976
|
const script = `${renderScript} ${oninit} `;
|
|
790
|
-
|
|
977
|
+
ObjectUtils.Script.evaluate(script, Object.assign(obj, { __render: render }));
|
|
791
978
|
}
|
|
792
979
|
targetElement.querySelectorAll(EventManager.attrNames.map((it) => `[${it}]`).join(",")).forEach((it) => {
|
|
793
980
|
it.setAttribute(EventManager.ownerVariablePathAttrName, "this");
|
|
794
981
|
});
|
|
795
|
-
|
|
796
|
-
const
|
|
982
|
+
rawSet.point.innerHTML = element.innerHTML;
|
|
983
|
+
const innerText = element.textContent?.trim() ?? "";
|
|
984
|
+
const escapedInnerHTML = ConvertUtils.escapeHTML(element.innerHTML);
|
|
985
|
+
const innerHTMLName = targetElement.getAttribute(_RawSet.DR_INNER_HTML_NAME_OPTIONNAME) ?? "innerHTML";
|
|
986
|
+
const innerTEXTName = targetElement.getAttribute(_RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? "innerTEXT";
|
|
987
|
+
const innerHTMLEscapedName = targetElement.getAttribute(_RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? "innerHTMLEscaped";
|
|
988
|
+
const templateReplacements = [];
|
|
797
989
|
if (innerHTMLName) {
|
|
798
|
-
|
|
990
|
+
templateReplacements.push({
|
|
991
|
+
regex: new RegExp(`#${innerHTMLName}#`, "g"),
|
|
992
|
+
callback: () => element.innerHTML
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
if (innerTEXTName) {
|
|
996
|
+
templateReplacements.push({
|
|
997
|
+
regex: new RegExp(`#${innerTEXTName}#`, "g"),
|
|
998
|
+
callback: () => innerText
|
|
999
|
+
});
|
|
1000
|
+
}
|
|
1001
|
+
if (innerHTMLEscapedName) {
|
|
1002
|
+
templateReplacements.push({
|
|
1003
|
+
regex: new RegExp(`#${innerHTMLEscapedName}#`, "g"),
|
|
1004
|
+
callback: () => escapedInnerHTML
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
1007
|
+
if (templateReplacements.length > 0) {
|
|
1008
|
+
targetElement.innerHTML = StringUtils.replaceSequentially(targetElement.innerHTML, templateReplacements);
|
|
799
1009
|
}
|
|
800
1010
|
const optionThisName = targetElement.getAttribute(_RawSet.DR_THIS_NAME_OPTIONNAME);
|
|
801
1011
|
targetElement.getAttributeNames().forEach((it) => targetElement.setAttribute(it, targetElement.getAttribute(it).replace(/#this#/g, drThis)));
|
|
@@ -803,8 +1013,14 @@ const _RawSet = class _RawSet {
|
|
|
803
1013
|
if (optionThisName) {
|
|
804
1014
|
targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);
|
|
805
1015
|
}
|
|
806
|
-
const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {
|
|
807
|
-
|
|
1016
|
+
const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {
|
|
1017
|
+
config,
|
|
1018
|
+
otherReplaceVariablePath: rawSet.findNearThisPath()
|
|
1019
|
+
});
|
|
1020
|
+
const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, {
|
|
1021
|
+
config,
|
|
1022
|
+
otherReplaceVariablePath: rawSet.findParentThisPath()
|
|
1023
|
+
});
|
|
808
1024
|
const vars = this.drVarEncoding(targetElement, drVarOption);
|
|
809
1025
|
this.drVarDecoding(targetElement, vars);
|
|
810
1026
|
this.drThisDecoding(targetElement, { asIs: thisRandom, toBe: "@this@" });
|
|
@@ -847,7 +1063,13 @@ const _RawSet = class _RawSet {
|
|
|
847
1063
|
};
|
|
848
1064
|
return targetAttribute;
|
|
849
1065
|
}
|
|
850
|
-
static createComponentTargetElement({
|
|
1066
|
+
static createComponentTargetElement({
|
|
1067
|
+
name,
|
|
1068
|
+
objFactory,
|
|
1069
|
+
template = "",
|
|
1070
|
+
styles = [],
|
|
1071
|
+
noStrip
|
|
1072
|
+
}) {
|
|
851
1073
|
const targetElement = {
|
|
852
1074
|
name,
|
|
853
1075
|
styles,
|
|
@@ -860,7 +1082,6 @@ const _RawSet = class _RawSet {
|
|
|
860
1082
|
obj.__domrender_components ?? (obj.__domrender_components = {});
|
|
861
1083
|
const domrenderComponents = obj.__domrender_components;
|
|
862
1084
|
const renderScript = ` /*createComponentTargetElement*/
|
|
863
|
-
// console.log('-------------------',this.__render);
|
|
864
1085
|
var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
|
|
865
1086
|
var ${EventManager.COMPONENT_VARNAME} = this.__render.component;
|
|
866
1087
|
var ${EventManager.ELEMENT_VARNAME} = this.__render.element;
|
|
@@ -897,7 +1118,10 @@ const _RawSet = class _RawSet {
|
|
|
897
1118
|
render.attribute = _RawSet.getAttributeObject(element, { script: renderScript, obj, renderData: render });
|
|
898
1119
|
render = Object.freeze(render);
|
|
899
1120
|
if (constructor) {
|
|
900
|
-
let param =
|
|
1121
|
+
let param = ObjectUtils.Script.evaluateReturn(
|
|
1122
|
+
{ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) },
|
|
1123
|
+
Object.assign(obj, { __render: render })
|
|
1124
|
+
) ?? [];
|
|
901
1125
|
if (!Array.isArray(param)) {
|
|
902
1126
|
param = [param];
|
|
903
1127
|
}
|
|
@@ -912,22 +1136,55 @@ const _RawSet = class _RawSet {
|
|
|
912
1136
|
rawSet.dataSet.render = render;
|
|
913
1137
|
instance.__rawSet = rawSet;
|
|
914
1138
|
let applayTemplate = element.innerHTML;
|
|
1139
|
+
let applayTemplateText = element.textContent?.trim() ?? "";
|
|
1140
|
+
let applayTemplateEscape = ConvertUtils.escapeHTML(element.innerHTML);
|
|
915
1141
|
let innerHTMLThisRandom;
|
|
916
|
-
const componentName = element.getAttribute(_RawSet.
|
|
917
|
-
const innerHTMLName = element.getAttribute(_RawSet.
|
|
1142
|
+
const componentName = element.getAttribute(_RawSet.DR_VARIABLE_NAME_OPTIONNAME) ?? "component";
|
|
1143
|
+
const innerHTMLName = element.getAttribute(_RawSet.DR_INNER_HTML_NAME_OPTIONNAME) ?? "innerHTML";
|
|
1144
|
+
const innerTEXTName = element.getAttribute(_RawSet.DR_INNER_TEXT_NAME_OPTIONNAME) ?? "innerTEXT";
|
|
1145
|
+
const innerHTMLEscapedName = element.getAttribute(_RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME) ?? "innerHTMLEscaped";
|
|
918
1146
|
if (applayTemplate) {
|
|
919
1147
|
innerHTMLThisRandom = RandomUtils.uuid();
|
|
920
|
-
applayTemplate =
|
|
921
|
-
|
|
1148
|
+
applayTemplate = StringUtils.replaceSequentially(applayTemplate, [
|
|
1149
|
+
{
|
|
1150
|
+
regex: /this\./g,
|
|
1151
|
+
callback: () => innerHTMLThisRandom
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
regex: new RegExp(`#${componentName}#`, "g"),
|
|
1155
|
+
callback: () => nearThisPath
|
|
1156
|
+
}
|
|
1157
|
+
]);
|
|
922
1158
|
}
|
|
923
|
-
applayTemplate = (this.template ?? ""
|
|
1159
|
+
applayTemplate = StringUtils.replaceSequentially(this.template ?? "", [
|
|
1160
|
+
{
|
|
1161
|
+
regex: new RegExp(`#${innerHTMLName}#`, "g"),
|
|
1162
|
+
callback: () => applayTemplate
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
regex: new RegExp(`#${innerTEXTName}#`, "g"),
|
|
1166
|
+
callback: () => applayTemplateText
|
|
1167
|
+
},
|
|
1168
|
+
{
|
|
1169
|
+
regex: new RegExp(`#${innerHTMLEscapedName}#`, "g"),
|
|
1170
|
+
callback: () => applayTemplateEscape
|
|
1171
|
+
}
|
|
1172
|
+
]);
|
|
924
1173
|
const style = _RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);
|
|
925
1174
|
element.innerHTML = style + (applayTemplate ?? "");
|
|
926
|
-
let data = await _RawSet.drThisCreate(
|
|
1175
|
+
let data = await _RawSet.drThisCreate(
|
|
1176
|
+
rawSet,
|
|
1177
|
+
element,
|
|
1178
|
+
`this.__domrender_components.${rawSet.uuid}`,
|
|
1179
|
+
"",
|
|
1180
|
+
!noStrip,
|
|
1181
|
+
obj,
|
|
1182
|
+
config
|
|
1183
|
+
);
|
|
927
1184
|
if (data && innerHTMLThisRandom) {
|
|
928
1185
|
const template2 = config.window.document.createElement("template");
|
|
929
|
-
template2.
|
|
930
|
-
|
|
1186
|
+
template2.innerHTML = ElementUtils.toInnerHTML(data, { document: config.window.document }).replace(RegExp(innerHTMLThisRandom, "g"), "this.");
|
|
1187
|
+
;
|
|
931
1188
|
data = template2.content;
|
|
932
1189
|
}
|
|
933
1190
|
return data;
|
|
@@ -964,7 +1221,26 @@ const _RawSet = class _RawSet {
|
|
|
964
1221
|
const normalAttribute = attribute[EventManager.normalAttrMapAttrName];
|
|
965
1222
|
if (normalAttribute) {
|
|
966
1223
|
new Map(JSON.parse(normalAttribute)).forEach((v, k) => {
|
|
967
|
-
const
|
|
1224
|
+
const variablePaths = v.variablePaths;
|
|
1225
|
+
let targetScript = v.originalAttrValue.trim();
|
|
1226
|
+
let checktargetScript = v.originalAttrValue.trim();
|
|
1227
|
+
variablePaths.forEach((it) => {
|
|
1228
|
+
checktargetScript = targetScript.replaceAll(it.origin, "");
|
|
1229
|
+
});
|
|
1230
|
+
let isScriptValue = checktargetScript.length === 0 && variablePaths.length === 1;
|
|
1231
|
+
if (isScriptValue) {
|
|
1232
|
+
let r = ObjectUtils.Path.toOptionalChainPath(variablePaths[0].inner);
|
|
1233
|
+
targetScript = targetScript.replaceAll(variablePaths[0].origin, r);
|
|
1234
|
+
} else {
|
|
1235
|
+
variablePaths.forEach((it) => {
|
|
1236
|
+
let r = ObjectUtils.Path.toOptionalChainPath(it.inner);
|
|
1237
|
+
targetScript = targetScript.replaceAll(it.origin, `\${${r}}`);
|
|
1238
|
+
});
|
|
1239
|
+
}
|
|
1240
|
+
const cval = ObjectUtils.Script.evaluateReturn(
|
|
1241
|
+
{ bodyScript: config.script, returnScript: isScriptValue ? targetScript : "`" + targetScript + "`" },
|
|
1242
|
+
Object.assign(config.obj, config.renderData ? { __render: config.renderData } : void 0)
|
|
1243
|
+
);
|
|
968
1244
|
attribute[k] = cval;
|
|
969
1245
|
});
|
|
970
1246
|
}
|
|
@@ -1005,11 +1281,12 @@ _RawSet.DR_COMPLETE_OPTIONNAME = "dr-option-complete";
|
|
|
1005
1281
|
_RawSet.DR_STRIP_OPTIONNAME = "dr-option-strip";
|
|
1006
1282
|
_RawSet.DR_DESTROY_OPTIONNAME = "dr-option-destroy";
|
|
1007
1283
|
_RawSet.DR_THIS_NAME_OPTIONNAME = "dr-option-this-name";
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
_RawSet.
|
|
1012
|
-
_RawSet.
|
|
1284
|
+
_RawSet.DR_VARIABLE_NAME_OPTIONNAME = "dr-option-variable-name";
|
|
1285
|
+
_RawSet.DR_ITEM_VARIABLE_NAME_OPTIONNAME = "dr-option-item-variable-name";
|
|
1286
|
+
_RawSet.DR_ITEM_INDEX_VARIABLE_NAME_OPTIONNAME = "dr-option-item-index-variable-name";
|
|
1287
|
+
_RawSet.DR_INNER_HTML_NAME_OPTIONNAME = "dr-option-inner-html-name";
|
|
1288
|
+
_RawSet.DR_INNER_TEXT_NAME_OPTIONNAME = "dr-option-inner-text-name";
|
|
1289
|
+
_RawSet.DR_INNER_HTML_ESCAPED_NAME_OPTIONNAME = "dr-option-inner-html-escaped-name";
|
|
1013
1290
|
_RawSet.DR_KEY_OPTIONNAME = "dr-option-key";
|
|
1014
1291
|
_RawSet.DR_HAS_KEYS_OPTIONNAME = "dr-option-has-keys";
|
|
1015
1292
|
_RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME = "dr-on-create:arguments";
|