@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.
Files changed (236) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -26
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +134 -62
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +32 -21
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +24 -6
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -1
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/appender/Appender.js +0 -3
  13. package/dist/cjs/components/appender/Appender.js.map +2 -2
  14. package/dist/cjs/components/checkbox/CheckBox.js.map +2 -2
  15. package/dist/cjs/components/choose/Choose.js +7 -1
  16. package/dist/cjs/components/choose/Choose.js.map +2 -2
  17. package/dist/cjs/components/details/Details.js +2 -2
  18. package/dist/cjs/components/details/Details.js.map +2 -2
  19. package/dist/cjs/components/forOf/ForOf.js.map +2 -2
  20. package/dist/cjs/components/if/If.js +2 -2
  21. package/dist/cjs/components/if/If.js.map +2 -2
  22. package/dist/cjs/components/input/Input.js +2 -2
  23. package/dist/cjs/components/input/Input.js.map +2 -2
  24. package/dist/cjs/components/promise/PromiseSwitch.js +6 -6
  25. package/dist/cjs/components/promise/PromiseSwitch.js.map +2 -2
  26. package/dist/cjs/components/radio/Radio.js.map +2 -2
  27. package/dist/cjs/components/router/Route.js +2 -2
  28. package/dist/cjs/components/router/Route.js.map +2 -2
  29. package/dist/cjs/components/router/RouterOutlet.js +17 -3
  30. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  31. package/dist/cjs/components/select/Select.js +26 -12
  32. package/dist/cjs/components/select/Select.js.map +2 -2
  33. package/dist/cjs/components/this/This.js +2 -2
  34. package/dist/cjs/components/this/This.js.map +2 -2
  35. package/dist/cjs/components/timer/Timer.js +15 -13
  36. package/dist/cjs/components/timer/Timer.js.map +2 -2
  37. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  38. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  39. package/dist/cjs/events/EventManager.js +9 -2
  40. package/dist/cjs/events/EventManager.js.map +2 -2
  41. package/dist/cjs/lifecycle/OnInitRender.js.map +1 -1
  42. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  43. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  44. package/dist/cjs/lifecycle/index.js +1 -0
  45. package/dist/cjs/lifecycle/index.js.map +2 -2
  46. package/dist/cjs/operators/DrForOf.js +24 -11
  47. package/dist/cjs/operators/DrForOf.js.map +2 -2
  48. package/dist/cjs/operators/DrIf.js +1 -2
  49. package/dist/cjs/operators/DrIf.js.map +2 -2
  50. package/dist/cjs/operators/DrInnerText.js +2 -2
  51. package/dist/cjs/operators/DrInnerText.js.map +2 -2
  52. package/dist/cjs/operators/DrTargetElement.js +2 -0
  53. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  54. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  55. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  56. package/dist/cjs/package.json +5 -0
  57. package/dist/cjs/rawsets/RawSet.js +392 -115
  58. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  59. package/dist/cjs/rawsets/Render.js.map +1 -1
  60. package/dist/cjs/routers/PathRouter.js +13 -7
  61. package/dist/cjs/routers/PathRouter.js.map +2 -2
  62. package/dist/cjs/routers/Router.js +76 -36
  63. package/dist/cjs/routers/Router.js.map +3 -3
  64. package/dist/esm/DomRender.js +41 -26
  65. package/dist/esm/DomRender.js.map +2 -2
  66. package/dist/esm/DomRenderProxy.js +134 -62
  67. package/dist/esm/DomRenderProxy.js.map +2 -2
  68. package/dist/esm/bundle-entry.js +22 -21
  69. package/dist/esm/bundle-entry.js.map +2 -2
  70. package/dist/esm/components/ComponentBase.js +24 -6
  71. package/dist/esm/components/ComponentBase.js.map +2 -2
  72. package/dist/esm/components/ComponentRouterBase.js +11 -1
  73. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  74. package/dist/esm/components/appender/Appender.js +0 -3
  75. package/dist/esm/components/appender/Appender.js.map +2 -2
  76. package/dist/esm/components/checkbox/CheckBox.js.map +2 -2
  77. package/dist/esm/components/choose/Choose.js +7 -1
  78. package/dist/esm/components/choose/Choose.js.map +2 -2
  79. package/dist/esm/components/details/Details.js +2 -2
  80. package/dist/esm/components/details/Details.js.map +2 -2
  81. package/dist/esm/components/forOf/ForOf.js.map +2 -2
  82. package/dist/esm/components/if/If.js +2 -2
  83. package/dist/esm/components/if/If.js.map +2 -2
  84. package/dist/esm/components/input/Input.js +2 -2
  85. package/dist/esm/components/input/Input.js.map +2 -2
  86. package/dist/esm/components/promise/PromiseSwitch.js +6 -6
  87. package/dist/esm/components/promise/PromiseSwitch.js.map +2 -2
  88. package/dist/esm/components/radio/Radio.js.map +2 -2
  89. package/dist/esm/components/router/Route.js +2 -2
  90. package/dist/esm/components/router/Route.js.map +2 -2
  91. package/dist/esm/components/router/RouterOutlet.js +18 -4
  92. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  93. package/dist/esm/components/select/Select.js +26 -12
  94. package/dist/esm/components/select/Select.js.map +2 -2
  95. package/dist/esm/components/this/This.js +2 -2
  96. package/dist/esm/components/this/This.js.map +2 -2
  97. package/dist/esm/components/timer/Timer.js +15 -13
  98. package/dist/esm/components/timer/Timer.js.map +2 -2
  99. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  100. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  101. package/dist/esm/events/EventManager.js +9 -2
  102. package/dist/esm/events/EventManager.js.map +2 -2
  103. package/dist/esm/lifecycle/OnInitRender.js.map +1 -1
  104. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  105. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  106. package/dist/esm/lifecycle/index.js +1 -0
  107. package/dist/esm/lifecycle/index.js.map +2 -2
  108. package/dist/esm/operators/DrForOf.js +24 -11
  109. package/dist/esm/operators/DrForOf.js.map +2 -2
  110. package/dist/esm/operators/DrIf.js +1 -2
  111. package/dist/esm/operators/DrIf.js.map +2 -2
  112. package/dist/esm/operators/DrInnerText.js +2 -2
  113. package/dist/esm/operators/DrInnerText.js.map +2 -2
  114. package/dist/esm/operators/DrTargetElement.js +2 -0
  115. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  116. package/dist/esm/operators/OperatorExecuter.js +1 -2
  117. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  118. package/dist/esm/rawsets/RawSet.js +392 -115
  119. package/dist/esm/rawsets/RawSet.js.map +3 -3
  120. package/dist/esm/routers/PathRouter.js +13 -7
  121. package/dist/esm/routers/PathRouter.js.map +2 -2
  122. package/dist/esm/routers/Router.js +76 -36
  123. package/dist/esm/routers/Router.js.map +3 -3
  124. package/dist/esm-bundle/dooboostore-dom-render.esm.js +14023 -6402
  125. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  126. package/dist/types/DomRender.d.ts +11 -5
  127. package/dist/types/DomRender.d.ts.map +1 -1
  128. package/dist/types/DomRenderProxy.d.ts +2 -2
  129. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  130. package/dist/types/bundle-entry.d.ts +5 -2
  131. package/dist/types/bundle-entry.d.ts.map +1 -1
  132. package/dist/types/components/ComponentBase.d.ts +8 -2
  133. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  134. package/dist/types/components/ComponentRouterBase.d.ts +8 -0
  135. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -1
  136. package/dist/types/components/appender/Appender.d.ts +0 -2
  137. package/dist/types/components/appender/Appender.d.ts.map +1 -1
  138. package/dist/types/components/checkbox/CheckBox.d.ts.map +1 -1
  139. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  140. package/dist/types/components/details/Details.d.ts +1 -1
  141. package/dist/types/components/details/Details.d.ts.map +1 -1
  142. package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
  143. package/dist/types/components/if/If.d.ts +1 -1
  144. package/dist/types/components/if/If.d.ts.map +1 -1
  145. package/dist/types/components/index.d.ts +2 -1
  146. package/dist/types/components/index.d.ts.map +1 -1
  147. package/dist/types/components/input/Input.d.ts +1 -1
  148. package/dist/types/components/input/Input.d.ts.map +1 -1
  149. package/dist/types/components/promise/PromiseSwitch.d.ts +1 -1
  150. package/dist/types/components/promise/PromiseSwitch.d.ts.map +1 -1
  151. package/dist/types/components/radio/Radio.d.ts.map +1 -1
  152. package/dist/types/components/router/Route.d.ts +1 -1
  153. package/dist/types/components/router/Route.d.ts.map +1 -1
  154. package/dist/types/components/router/RouterOutlet.d.ts +6 -2
  155. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  156. package/dist/types/components/select/Select.d.ts +5 -5
  157. package/dist/types/components/select/Select.d.ts.map +1 -1
  158. package/dist/types/components/this/This.d.ts +1 -1
  159. package/dist/types/components/this/This.d.ts.map +1 -1
  160. package/dist/types/components/timer/Timer.d.ts +6 -4
  161. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  162. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  163. package/dist/types/events/EventManager.d.ts +8 -0
  164. package/dist/types/events/EventManager.d.ts.map +1 -1
  165. package/dist/types/index.d.ts +0 -100
  166. package/dist/types/lifecycle/OnInitRender.d.ts +1 -1
  167. package/dist/types/lifecycle/OnInitRender.d.ts.map +1 -1
  168. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  169. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  170. package/dist/types/lifecycle/index.d.ts +1 -0
  171. package/dist/types/lifecycle/index.d.ts.map +1 -1
  172. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  173. package/dist/types/operators/DrInnerText.d.ts.map +1 -1
  174. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  175. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
  176. package/dist/types/rawsets/RawSet.d.ts +17 -9
  177. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  178. package/dist/types/rawsets/Render.d.ts +1 -0
  179. package/dist/types/rawsets/Render.d.ts.map +1 -1
  180. package/dist/types/routers/PathRouter.d.ts.map +1 -1
  181. package/dist/types/routers/Router.d.ts +11 -14
  182. package/dist/types/routers/Router.d.ts.map +1 -1
  183. package/dist/umd-bundle/dooboostore-dom-render.umd.js +14104 -6502
  184. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  185. package/package.json +9 -8
  186. package/src/DomRender.ts +62 -34
  187. package/src/DomRenderProxy.ts +275 -142
  188. package/src/bundle-entry.ts +5 -3
  189. package/src/components/ComponentBase.ts +33 -11
  190. package/src/components/ComponentRouterBase.ts +17 -2
  191. package/src/components/appender/Appender.ts +0 -5
  192. package/src/components/checkbox/CheckBox.ts +22 -25
  193. package/src/components/choose/Choose.ts +19 -18
  194. package/src/components/details/Details.ts +40 -43
  195. package/src/components/forOf/ForOf.ts +6 -9
  196. package/src/components/if/If.ts +9 -11
  197. package/src/components/input/Input.ts +16 -22
  198. package/src/components/promise/PromiseSwitch.ts +67 -66
  199. package/src/components/radio/Radio.ts +23 -28
  200. package/src/components/router/Route.ts +10 -13
  201. package/src/components/router/RouterOutlet.ts +29 -8
  202. package/src/components/select/Select.ts +47 -33
  203. package/src/components/this/This.ts +13 -12
  204. package/src/components/timer/Timer.ts +29 -65
  205. package/src/decorators/DomRenderNoProxy.ts +3 -1
  206. package/src/events/EventManager.ts +15 -4
  207. package/src/lifecycle/OnInitRender.ts +1 -1
  208. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  209. package/src/lifecycle/index.ts +1 -0
  210. package/src/node_modules/.bin/acorn +17 -0
  211. package/src/node_modules/.bin/browserslist +17 -0
  212. package/src/node_modules/.bin/eslint +17 -0
  213. package/src/node_modules/.bin/sbf +17 -0
  214. package/src/node_modules/.bin/ts-node +17 -0
  215. package/src/node_modules/.bin/ts-node-cwd +17 -0
  216. package/src/node_modules/.bin/ts-node-dev +17 -0
  217. package/src/node_modules/.bin/ts-node-esm +17 -0
  218. package/src/node_modules/.bin/ts-node-script +17 -0
  219. package/src/node_modules/.bin/ts-node-transpile-only +17 -0
  220. package/src/node_modules/.bin/ts-script +17 -0
  221. package/src/node_modules/.bin/tsc +17 -0
  222. package/src/node_modules/.bin/tsnd +17 -0
  223. package/src/node_modules/.bin/tsserver +17 -0
  224. package/src/node_modules/.bin/webpack +17 -0
  225. package/src/node_modules/.bin/webpack-cli +17 -0
  226. package/src/node_modules/.bin/webpack-dev-server +17 -0
  227. package/src/operators/DrForOf.ts +25 -10
  228. package/src/operators/DrIf.ts +1 -1
  229. package/src/operators/DrInnerText.ts +2 -1
  230. package/src/operators/DrTargetElement.ts +14 -0
  231. package/src/operators/OperatorExecuter.ts +1 -2
  232. package/src/rawsets/RawSet.ts +709 -295
  233. package/src/rawsets/Render.ts +1 -0
  234. package/src/routers/PathRouter.ts +14 -7
  235. package/src/routers/Router.ts +107 -61
  236. 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 ScriptUtils.evaluateReturn(optionalPath, obj);
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 ScriptUtils.evaluateReturn(optionalPath, obj);
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(_RawSet.DR_ATTRIBUTES, _RawSet.DR_DETECT_FILTER_OPTIONNAME, _RawSet.DR_DETECT_IF_OPTIONNAME, _RawSet.DR_DETECT_ATTR_OPTIONNAME);
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
- targetScripts.push(`(${v})`);
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: 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 = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
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 = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
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(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drPre }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
204
- new Dr(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.dr }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
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(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drIf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
207
- new DrStripElement(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
208
- new DrThis(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
209
- new DrForm(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drForm }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
210
- new DrInnerText(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drInnerText }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
211
- new DrInnerHTML(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drInnerHTML }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
212
- new DrFor(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drFor }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
213
- new DrForOf(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drForOf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
214
- new DrThisProperty(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drThisProperty }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
215
- new DrAppender(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drAppender }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
216
- new DrRepeat(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr }, { config, obj, operatorAround: config.operatorAround?.drRepeat }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
217
- new DrTargetElementIsElement(this, __render, { raws, fag }, { element, attrName: _RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME, attr: drAttr.drReplaceTargetElementIs, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
218
- new DrTargetElement(this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
219
- new DrTargetAttr(this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks })
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
- ScriptUtils.evaluate(`
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}`, Object.assign(obj, { __render: render }));
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(obj, this.dataSet.config.eventManager.findAttrElements(fragment, config), config);
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 = ScriptUtils.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);
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 nodeIterator = config.window.document?.createNodeIterator(element, NodeFilter.SHOW_ALL, {
376
- acceptNode(node) {
377
- if (node.nodeType === Node.TEXT_NODE) {
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
- return between?.length > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
380
- } else if (node.nodeType === Node.ELEMENT_NODE) {
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
- return NodeFilter.FILTER_REJECT;
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) => ({ key: match[1], value: match[2] }));
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
- let variablePath = _RawSet.expressionGroups(value)[0][1];
405
- const originVariable = variablePath;
406
- variablePath = variablePath.replace(/#[^#]*#/g, "({})");
407
- const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);
408
- const cval = ScriptUtils.evaluateReturn(optionalChainPath, Object.assign(obj));
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, originVariable);
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(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));
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 r = isAttr || isElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
426
- return r;
582
+ const r2 = isAttr || isElement ? NodeUtils.FindNodesFilterResult.MATCH_AND_SKIP_CHILDREN : NodeUtils.FindNodesFilterResult.NO_MATCH_AND_CONTINUE;
583
+ return r2;
427
584
  }
428
- return NodeFilter.FILTER_REJECT;
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
- while (currentNode = nodeIterator?.nextNode()) {
434
- if (currentNode.nodeType === Node.TEXT_NODE) {
435
- const text = currentNode.textContent ?? "";
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) => ({ uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`, content: it[0], regexArr: 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 (currentNode.parentNode && currentNode.parentNode.nodeName.toUpperCase() === "STYLE") {
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(new _RawSet(it.uuid, type, {
459
- start: startEndPoint.start,
460
- node: currentNode,
461
- end: startEndPoint.end,
462
- parent: currentNode.parentNode
463
- // thisVariableName: thisVariableName
464
- }, { fragment, config }));
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
- currentNode?.parentNode?.replaceChild(template.content, currentNode);
469
- } else if (currentNode.nodeType === Node.ELEMENT_NODE) {
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 = currentNode;
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
- currentNode?.parentNode?.insertBefore(startEndPoint.start, currentNode);
481
- currentNode?.parentNode?.insertBefore(startEndPoint.end, currentNode.nextSibling);
482
- fragment.append(currentNode);
483
- const rawSet = new _RawSet(uuid, isElement ? elementType : isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN, {
484
- start: startEndPoint.start,
485
- node: currentNode,
486
- end: startEndPoint.end,
487
- parent: currentNode.parentNode
488
- // thisVariableName: thisVariableName
489
- }, { config, fragment });
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(`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`).forEach((it) => {
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(`[${_RawSet.DR_IT_OPTIONNAME}], [${_RawSet.DR_FOR_OF_NAME}], [${_RawSet.DR_REPEAT_NAME}], [${_RawSet.DR_APPENDER_NAME}]`).forEach((it) => {
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 = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);
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 = ScriptUtils.evaluate(onCreateDataScript, Object.assign(obj, { __render: render }));
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 = ScriptUtils.evaluateReturn({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(onCreate) }, obj);
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
- ScriptUtils.evaluate(script, Object.assign(obj, { __render: render }));
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
- const componentNameReplaceKey = RandomUtils.uuid();
796
- const innerHTMLName = targetElement.getAttribute(_RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? "innerHTML";
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
- _RawSet.replaceInnerHTML(targetElement, { asIs: `#${innerHTMLName}#`, toBe: element.innerHTML });
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, { config, otherReplaceVariablePath: rawSet.findNearThisPath() });
807
- const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, { config, otherReplaceVariablePath: rawSet.findParentThisPath() });
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({ name, objFactory, template = "", styles = [], noStrip }) {
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 = ScriptUtils.evaluateReturn({ bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor) }, Object.assign(obj, { __render: render })) ?? [];
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.DR_COMPONENT_NAME_OPTIONNAME) ?? "component";
917
- const innerHTMLName = element.getAttribute(_RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? "innerHTML";
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 = applayTemplate.replace(/this\./g, innerHTMLThisRandom);
921
- applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, "g"), "this");
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 ?? "").replace(RegExp(`#${innerHTMLName}#`, "g"), applayTemplate);
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(rawSet, element, `this.__domrender_components.${rawSet.uuid}`, "", !noStrip, obj, config);
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.content.append(data);
930
- template2.innerHTML = template2.innerHTML.replace(RegExp(innerHTMLThisRandom, "g"), "this.");
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 cval = ScriptUtils.evaluateReturn({ bodyScript: config.script, returnScript: v }, Object.assign(config.obj, config.renderData ? { __render: config.renderData } : void 0));
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
- * @deprecated
1010
- */
1011
- _RawSet.DR_COMPONENT_NAME_OPTIONNAME = "dr-option-component-name";
1012
- _RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME = "dr-option-component-inner-html-name";
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";