@dooboostore/dom-render 1.0.98

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 (230) hide show
  1. package/DomRender.d.ts +24 -0
  2. package/DomRender.js +115 -0
  3. package/DomRenderProxy.d.ts +38 -0
  4. package/DomRenderProxy.js +586 -0
  5. package/README.MD +938 -0
  6. package/components/ComponentBase.d.ts +41 -0
  7. package/components/ComponentBase.js +210 -0
  8. package/components/ComponentSet.d.ts +22 -0
  9. package/components/ComponentSet.js +23 -0
  10. package/components/appender/Appender.d.ts +23 -0
  11. package/components/appender/Appender.js +59 -0
  12. package/components/checkbox/CheckBox.d.ts +47 -0
  13. package/components/checkbox/CheckBox.js +118 -0
  14. package/components/choose/Choose.d.ts +39 -0
  15. package/components/choose/Choose.js +110 -0
  16. package/components/details/Details.d.ts +57 -0
  17. package/components/details/Details.js +199 -0
  18. package/components/dialog/Dialog.d.ts +1 -0
  19. package/components/dialog/Dialog.js +85 -0
  20. package/components/dialog/example/ImageEditorDialog.d.ts +1 -0
  21. package/components/dialog/example/ImageEditorDialog.js +116 -0
  22. package/components/forOf/ForOf.d.ts +18 -0
  23. package/components/forOf/ForOf.js +32 -0
  24. package/components/if/If.d.ts +21 -0
  25. package/components/if/If.js +40 -0
  26. package/components/index.d.ts +27 -0
  27. package/components/index.js +13 -0
  28. package/components/input/Input.d.ts +34 -0
  29. package/components/input/Input.js +86 -0
  30. package/components/promise/PromiseSwitch.d.ts +55 -0
  31. package/components/promise/PromiseSwitch.js +181 -0
  32. package/components/radio/Radio.d.ts +45 -0
  33. package/components/radio/Radio.js +123 -0
  34. package/components/select/Select.d.ts +23 -0
  35. package/components/select/Select.js +52 -0
  36. package/components/this/This.d.ts +24 -0
  37. package/components/this/This.js +62 -0
  38. package/components/timer/Timer.d.ts +26 -0
  39. package/components/timer/Timer.js +102 -0
  40. package/configs/Config.d.ts +34 -0
  41. package/configs/Config.js +2 -0
  42. package/configs/TargetAttr.d.ts +7 -0
  43. package/configs/TargetAttr.js +2 -0
  44. package/configs/TargetElement.d.ts +16 -0
  45. package/configs/TargetElement.js +2 -0
  46. package/css/parse/index.d.ts +49 -0
  47. package/css/parse/index.js +498 -0
  48. package/css/stringify/compiler.d.ts +34 -0
  49. package/css/stringify/compiler.js +36 -0
  50. package/css/stringify/compress.d.ts +104 -0
  51. package/css/stringify/compress.js +147 -0
  52. package/css/stringify/identity.d.ts +109 -0
  53. package/css/stringify/identity.js +183 -0
  54. package/css/stringify/index.d.ts +24 -0
  55. package/css/stringify/index.js +27 -0
  56. package/css/stringify/types.d.ts +15 -0
  57. package/css/stringify/types.js +2 -0
  58. package/css/types.d.ts +10 -0
  59. package/css/types.js +2 -0
  60. package/decorators/DomRenderNoProxy.d.ts +4 -0
  61. package/decorators/DomRenderNoProxy.js +15 -0
  62. package/events/EventManager.d.ts +68 -0
  63. package/events/EventManager.js +477 -0
  64. package/index.d.ts +2 -0
  65. package/index.js +2 -0
  66. package/iterators/Range.d.ts +24 -0
  67. package/iterators/Range.js +70 -0
  68. package/lifecycle/OnBeforeReturnGet.d.ts +4 -0
  69. package/lifecycle/OnBeforeReturnGet.js +2 -0
  70. package/lifecycle/OnBeforeReturnSet.d.ts +5 -0
  71. package/lifecycle/OnBeforeReturnSet.js +4 -0
  72. package/lifecycle/OnChangeAttrRender.d.ts +9 -0
  73. package/lifecycle/OnChangeAttrRender.js +4 -0
  74. package/lifecycle/OnChildRenderedByProperty.d.ts +5 -0
  75. package/lifecycle/OnChildRenderedByProperty.js +4 -0
  76. package/lifecycle/OnCreateRender.d.ts +5 -0
  77. package/lifecycle/OnCreateRender.js +4 -0
  78. package/lifecycle/OnCreateRenderData.d.ts +10 -0
  79. package/lifecycle/OnCreateRenderData.js +4 -0
  80. package/lifecycle/OnCreateRendered.d.ts +8 -0
  81. package/lifecycle/OnCreateRendered.js +4 -0
  82. package/lifecycle/OnCreatedThisChild.d.ts +6 -0
  83. package/lifecycle/OnCreatedThisChild.js +4 -0
  84. package/lifecycle/OnDestroyRender.d.ts +9 -0
  85. package/lifecycle/OnDestroyRender.js +4 -0
  86. package/lifecycle/OnInitRender.d.ts +6 -0
  87. package/lifecycle/OnInitRender.js +4 -0
  88. package/lifecycle/OnProxyDomRender.d.ts +5 -0
  89. package/lifecycle/OnProxyDomRender.js +2 -0
  90. package/lifecycle/dr-this/OnDrThisBind.d.ts +5 -0
  91. package/lifecycle/dr-this/OnDrThisBind.js +4 -0
  92. package/lifecycle/dr-this/OnDrThisUnBind.d.ts +5 -0
  93. package/lifecycle/dr-this/OnDrThisUnBind.js +4 -0
  94. package/managers/RenderManager.d.ts +2 -0
  95. package/managers/RenderManager.js +12 -0
  96. package/messenger/DefaultMessenger.d.ts +4 -0
  97. package/messenger/DefaultMessenger.js +4 -0
  98. package/messenger/Messenger.d.ts +79 -0
  99. package/messenger/Messenger.js +185 -0
  100. package/operators/Appender.d.ts +15 -0
  101. package/operators/Appender.js +90 -0
  102. package/operators/Dr.d.ts +9 -0
  103. package/operators/Dr.js +53 -0
  104. package/operators/DrAppender.d.ts +9 -0
  105. package/operators/DrAppender.js +69 -0
  106. package/operators/DrFor.d.ts +9 -0
  107. package/operators/DrFor.js +58 -0
  108. package/operators/DrForOf.d.ts +9 -0
  109. package/operators/DrForOf.js +120 -0
  110. package/operators/DrForm.d.ts +9 -0
  111. package/operators/DrForm.js +79 -0
  112. package/operators/DrIf.d.ts +9 -0
  113. package/operators/DrIf.js +70 -0
  114. package/operators/DrInnerHTML.d.ts +9 -0
  115. package/operators/DrInnerHTML.js +48 -0
  116. package/operators/DrInnerText.d.ts +9 -0
  117. package/operators/DrInnerText.js +46 -0
  118. package/operators/DrPre.d.ts +8 -0
  119. package/operators/DrPre.js +22 -0
  120. package/operators/DrRepeat.d.ts +9 -0
  121. package/operators/DrRepeat.js +70 -0
  122. package/operators/DrStripElement.d.ts +9 -0
  123. package/operators/DrStripElement.js +50 -0
  124. package/operators/DrTargetAttr.d.ts +8 -0
  125. package/operators/DrTargetAttr.js +45 -0
  126. package/operators/DrTargetElement.d.ts +13 -0
  127. package/operators/DrTargetElement.js +91 -0
  128. package/operators/DrTargetElementIsElement.d.ts +13 -0
  129. package/operators/DrTargetElementIsElement.js +79 -0
  130. package/operators/DrThis.d.ts +7 -0
  131. package/operators/DrThis.js +72 -0
  132. package/operators/DrThisProperty.d.ts +11 -0
  133. package/operators/DrThisProperty.js +93 -0
  134. package/operators/OperatorExecuter.d.ts +50 -0
  135. package/operators/OperatorExecuter.js +50 -0
  136. package/operators/OperatorExecuterAttrRequire.d.ts +9 -0
  137. package/operators/OperatorExecuterAttrRequire.js +25 -0
  138. package/package.json +70 -0
  139. package/rawsets/AttrInitCallBack.d.ts +6 -0
  140. package/rawsets/AttrInitCallBack.js +2 -0
  141. package/rawsets/Attrs.d.ts +27 -0
  142. package/rawsets/Attrs.js +2 -0
  143. package/rawsets/CreatorMetaData.d.ts +20 -0
  144. package/rawsets/CreatorMetaData.js +2 -0
  145. package/rawsets/DestroyOptionType.d.ts +5 -0
  146. package/rawsets/DestroyOptionType.js +6 -0
  147. package/rawsets/ElementInitCallBack.d.ts +9 -0
  148. package/rawsets/ElementInitCallBack.js +2 -0
  149. package/rawsets/RawSet.d.ts +180 -0
  150. package/rawsets/RawSet.js +1450 -0
  151. package/rawsets/RawSetOperatorType.d.ts +4 -0
  152. package/rawsets/RawSetOperatorType.js +5 -0
  153. package/rawsets/RawSetType.d.ts +8 -0
  154. package/rawsets/RawSetType.js +9 -0
  155. package/rawsets/Render.d.ts +27 -0
  156. package/rawsets/Render.js +2 -0
  157. package/routers/HashRouter.d.ts +24 -0
  158. package/routers/HashRouter.js +86 -0
  159. package/routers/PathRouter.d.ts +23 -0
  160. package/routers/PathRouter.js +73 -0
  161. package/routers/Router.d.ts +68 -0
  162. package/routers/Router.js +132 -0
  163. package/types/Types.d.ts +12 -0
  164. package/types/Types.js +26 -0
  165. package/validators/AllCheckedValidatorArray.d.ts +7 -0
  166. package/validators/AllCheckedValidatorArray.js +11 -0
  167. package/validators/AllUnCheckedValidatorArray.d.ts +7 -0
  168. package/validators/AllUnCheckedValidatorArray.js +11 -0
  169. package/validators/CheckedValidator.d.ts +6 -0
  170. package/validators/CheckedValidator.js +11 -0
  171. package/validators/CountEqualsCheckedValidatorArray.d.ts +8 -0
  172. package/validators/CountEqualsCheckedValidatorArray.js +12 -0
  173. package/validators/CountEqualsUnCheckedValidatorArray.d.ts +8 -0
  174. package/validators/CountEqualsUnCheckedValidatorArray.js +12 -0
  175. package/validators/CountGreaterThanCheckedValidatorArray.d.ts +8 -0
  176. package/validators/CountGreaterThanCheckedValidatorArray.js +12 -0
  177. package/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +8 -0
  178. package/validators/CountGreaterThanEqualsCheckedValidatorArray.js +12 -0
  179. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +8 -0
  180. package/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +12 -0
  181. package/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +8 -0
  182. package/validators/CountGreaterThanUnCheckedValidatorArray.js +12 -0
  183. package/validators/CountLessThanCheckedValidatorArray.d.ts +8 -0
  184. package/validators/CountLessThanCheckedValidatorArray.js +12 -0
  185. package/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +8 -0
  186. package/validators/CountLessThanEqualsCheckedValidatorArray.js +12 -0
  187. package/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +8 -0
  188. package/validators/CountLessThanEqualsUnCheckedValidatorArray.js +12 -0
  189. package/validators/CountLessThanUnCheckedValidatorArray.d.ts +8 -0
  190. package/validators/CountLessThanUnCheckedValidatorArray.js +12 -0
  191. package/validators/CountUnCheckedValidatorArray.d.ts +8 -0
  192. package/validators/CountUnCheckedValidatorArray.js +12 -0
  193. package/validators/EmptyValidator.d.ts +6 -0
  194. package/validators/EmptyValidator.js +12 -0
  195. package/validators/ExcludeCheckedValidatorArray.d.ts +9 -0
  196. package/validators/ExcludeCheckedValidatorArray.js +17 -0
  197. package/validators/FormValidator.d.ts +8 -0
  198. package/validators/FormValidator.js +16 -0
  199. package/validators/IncludeCheckedValidatorArray.d.ts +9 -0
  200. package/validators/IncludeCheckedValidatorArray.js +17 -0
  201. package/validators/MultipleValidator.d.ts +9 -0
  202. package/validators/MultipleValidator.js +25 -0
  203. package/validators/NonPassValidator.d.ts +6 -0
  204. package/validators/NonPassValidator.js +10 -0
  205. package/validators/NotEmptyValidator.d.ts +6 -0
  206. package/validators/NotEmptyValidator.js +13 -0
  207. package/validators/NotRegExpTestValidator.d.ts +7 -0
  208. package/validators/NotRegExpTestValidator.js +20 -0
  209. package/validators/PassValidator.d.ts +6 -0
  210. package/validators/PassValidator.js +10 -0
  211. package/validators/RegExpTestValidator.d.ts +7 -0
  212. package/validators/RegExpTestValidator.js +21 -0
  213. package/validators/RequiredValidator.d.ts +6 -0
  214. package/validators/RequiredValidator.js +12 -0
  215. package/validators/UnCheckedValidator.d.ts +6 -0
  216. package/validators/UnCheckedValidator.js +11 -0
  217. package/validators/ValidMultipleValidator.d.ts +10 -0
  218. package/validators/ValidMultipleValidator.js +12 -0
  219. package/validators/ValidValidator.d.ts +7 -0
  220. package/validators/ValidValidator.js +11 -0
  221. package/validators/ValidValidatorArray.d.ts +8 -0
  222. package/validators/ValidValidatorArray.js +11 -0
  223. package/validators/Validator.d.ts +58 -0
  224. package/validators/Validator.js +203 -0
  225. package/validators/ValidatorArray.d.ts +18 -0
  226. package/validators/ValidatorArray.js +77 -0
  227. package/validators/ValueEqualsValidator.d.ts +7 -0
  228. package/validators/ValueEqualsValidator.js +11 -0
  229. package/validators/ValueNotEqualsValidator.d.ts +7 -0
  230. package/validators/ValueNotEqualsValidator.js +11 -0
@@ -0,0 +1,1450 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { RandomUtils } from '@dooboostore/core/random/RandomUtils';
11
+ import { StringUtils } from '@dooboostore/core/string/StringUtils';
12
+ import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';
13
+ import { EventManager, eventManager } from '../events/EventManager';
14
+ import { Range } from '../iterators/Range';
15
+ import { DomUtils } from '@dooboostore/core-web/dom/DomUtils';
16
+ import { DrPre } from '../operators/DrPre';
17
+ import { Dr } from '../operators/Dr';
18
+ import { DrIf } from '../operators/DrIf';
19
+ import { ExecuteState } from '../operators/OperatorExecuter';
20
+ import { DrThis } from '../operators/DrThis';
21
+ import { DrForm } from '../operators/DrForm';
22
+ import { DrInnerText } from '../operators/DrInnerText';
23
+ import { DrInnerHTML } from '../operators/DrInnerHTML';
24
+ import { DrFor } from '../operators/DrFor';
25
+ import { DrForOf } from '../operators/DrForOf';
26
+ import { DrAppender } from '../operators/DrAppender';
27
+ import { DrRepeat } from '../operators/DrRepeat';
28
+ import { DrTargetElement } from '../operators/DrTargetElement';
29
+ import { DrTargetAttr } from '../operators/DrTargetAttr';
30
+ import { DrStripElement } from '../operators/DrStripElement';
31
+ import { DestroyOptionType } from './DestroyOptionType';
32
+ import { RawSetType } from './RawSetType';
33
+ import { DrThisProperty } from '../operators/DrThisProperty';
34
+ import { RawSetOperatorType } from './RawSetOperatorType';
35
+ import cssParse from '../css/parse';
36
+ import cssStringify from '../css/stringify';
37
+ import { isOnCreateRenderData } from '../lifecycle/OnCreateRenderData';
38
+ import { isOnCreateRender } from '../lifecycle/OnCreateRender';
39
+ import { isOnChangeAttrRender } from '../lifecycle/OnChangeAttrRender';
40
+ import { isOnInitRender } from '../lifecycle/OnInitRender';
41
+ import { isOnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';
42
+ import { isOnDestroyRender } from '../lifecycle/OnDestroyRender';
43
+ import { DrTargetElementIsElement } from '../operators/DrTargetElementIsElement';
44
+ export class RawSet {
45
+ constructor(uuid, type, point, dataSet, detect) {
46
+ this.uuid = uuid;
47
+ this.type = type;
48
+ this.point = point;
49
+ this.dataSet = dataSet;
50
+ this.detect = detect;
51
+ this.findNearThis = (obj, rawSet = this) => {
52
+ const path = this.findNearThisPath(rawSet);
53
+ if (path)
54
+ return ScriptUtils.evalReturn(path, obj);
55
+ };
56
+ this.findParentThis = (obj, rawSet = this) => {
57
+ const path = this.findParentThisPath(rawSet);
58
+ if (path)
59
+ return ScriptUtils.evalReturn(path, obj);
60
+ };
61
+ this.findNearThisPath = (rawSet = this) => {
62
+ const paths = this.findThisPaths(rawSet);
63
+ return paths[paths.length - 1];
64
+ };
65
+ this.findParentThisPath = (rawSet = this) => {
66
+ const paths = this.findThisPaths(rawSet);
67
+ return paths[paths.length - 2];
68
+ };
69
+ this.findThisPaths = (rawSet = this) => {
70
+ const paths = [];
71
+ const findPath = (rawSet) => {
72
+ if (rawSet && rawSet.point) {
73
+ // jsDom에서 instranceof HTMLMetaElement가 안먹히는것같아? 간혈적으로?
74
+ if ('getAttribute' in rawSet.point.start && rawSet.point.start.getAttribute('this-path')) {
75
+ paths.push(rawSet.point.start.getAttribute('this-path'));
76
+ }
77
+ if (rawSet.point.parentRawSet)
78
+ findPath(rawSet.point.parentRawSet);
79
+ }
80
+ };
81
+ findPath(rawSet);
82
+ paths.push('this');
83
+ return paths.reverse();
84
+ };
85
+ // point.start.rawSet = this;
86
+ // console.log('rawset constructor->', (this.point.node as Element).getAttributeNames());
87
+ }
88
+ get isConnected() {
89
+ // console.log('isConnect???', this, this.point.start.isConnected, this.point.end.isConnected);
90
+ return this.point.start.isConnected && this.point.end.isConnected;
91
+ }
92
+ // 중요
93
+ getUsingTriggerVariables(config) {
94
+ const usingTriggerVariables = new Set();
95
+ // console.log('------data', this.dataSet)
96
+ this.dataSet.fragment.childNodes.forEach((cNode, key) => {
97
+ var _a, _b, _c;
98
+ // console.log('-----aaaa-data', cNode, key)
99
+ let script = '';
100
+ if (cNode.nodeType === Node.TEXT_NODE) {
101
+ script = `\`${(_a = cNode.textContent) !== null && _a !== void 0 ? _a : ''}\``;
102
+ const expressionGroups = RawSet.expressionGroups(script);
103
+ // console.log('???????', script, expressionGroups)
104
+ if (expressionGroups[0].length > 1) {
105
+ script = expressionGroups[0][1];
106
+ }
107
+ // console.log('--', expressionGroups, script)
108
+ }
109
+ else if (cNode.nodeType === Node.ELEMENT_NODE) {
110
+ const element = cNode;
111
+ const targetAttrNames = ((_c = (_b = config === null || config === void 0 ? void 0 : config.targetAttrs) === null || _b === void 0 ? void 0 : _b.map(it => it.name)) !== null && _c !== void 0 ? _c : [])
112
+ .concat(RawSet.DR_ATTRIBUTES, RawSet.DR_DETECT_FILTER_OPTIONNAME, RawSet.DR_DETECT_IF_OPTIONNAME, RawSet.DR_DETECT_ATTR_OPTIONNAME); // .concat(EventManager.normalAttrMapAttrName);
113
+ const targetScripts = targetAttrNames.map(it => element.getAttribute(it)).filter(it => it).map(it => `(${it})`);
114
+ const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);
115
+ // console.log('targetAttrMap-->', targetAttrMap)
116
+ if (targetAttrMap) {
117
+ new Map(JSON.parse(targetAttrMap)).forEach((v, k) => {
118
+ targetScripts.push(`(${v})`);
119
+ });
120
+ }
121
+ script = targetScripts.join(';');
122
+ // script = targetScripts.map(it=>`try{${it}}catch(e){}`).join(';');
123
+ // attribute쪽 체크하는거 추가
124
+ // console.log('----!!!!!-->', targetAttrNames)
125
+ // const otherAttrs = element.getAttributeNames()
126
+ // .filter(it => !targetAttrNames.includes(it.toLowerCase()) && RawSet.isExporesion(element.getAttribute(it)))
127
+ // .map(it => {
128
+ // return `\`${element.getAttribute(it) ?? ''}\``;
129
+ // }).join(';');
130
+ // script += ';' + otherAttrs
131
+ }
132
+ if (script) {
133
+ script = script.replace(/#[^#]*#/g, '({})');
134
+ // script = script.replace('}$','}');
135
+ // script = script.replace('@this@','this');
136
+ // console.log('----------->', script)
137
+ EventManager.VARNAMES.forEach(it => {
138
+ // script = script.replace(RegExp(it.replace('$', '\\$'), 'g'), `this?.___${it}`);
139
+ // script = script.replace(RegExp(it.replace('$', '\\$'), 'g'), `this.___${it}`);
140
+ script = script.replace(RegExp(it.replace('$', '\\$'), 'g'), `this.___${it}`);
141
+ // console.log('scripts-->', script)
142
+ });
143
+ // console.log('--------1--', script);
144
+ // script = script.replaceAll('#{','${').replaceAll('}#', '}')
145
+ // console.log('--------2--', script);
146
+ Array.from(ScriptUtils.getVariablePaths(script)).filter(it => !it.startsWith(`___${EventManager.SCRIPTS_VARNAME}`)).forEach(it => usingTriggerVariables.add(it));
147
+ }
148
+ });
149
+ // console.log('usingTriggerVariable----------->', usingTriggerVariables)
150
+ return usingTriggerVariables;
151
+ }
152
+ // 중요 render 처리 부분
153
+ render(obj, config) {
154
+ return __awaiter(this, void 0, void 0, function* () {
155
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
156
+ // console.log('render!!!!!!!!!!!!!!')
157
+ const genNode = config.window.document.importNode(this.dataSet.fragment, true);
158
+ const raws = [];
159
+ const onAttrInitCallBacks = [];
160
+ const onElementInitCallBacks = [];
161
+ const onThisComponentSetCallBacks = [];
162
+ const drAttrs = [];
163
+ // console.log('rawSet render!!', obj, config, this, Array.from(genNode.childNodes.values()));
164
+ for (const cNode of Array.from(genNode.childNodes.values())) {
165
+ // console.log('cNodecNodecNode', cNode);
166
+ let attribute = {};
167
+ if (cNode.nodeType === Node.ELEMENT_NODE) {
168
+ attribute = DomUtils.getAttributeToObject(cNode);
169
+ }
170
+ const __render = Object.freeze({
171
+ rawSet: this,
172
+ scripts: EventManager.setBindProperty(config === null || config === void 0 ? void 0 : config.scripts, obj),
173
+ router: config === null || config === void 0 ? void 0 : config.router,
174
+ range: Range.range,
175
+ element: cNode,
176
+ attribute: attribute,
177
+ rootObject: obj,
178
+ scriptUtils: ScriptUtils,
179
+ nearThis: this.findNearThis(obj),
180
+ parentThis: this.findParentThis(obj),
181
+ bindScript: `
182
+ const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;
183
+ const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
184
+ const ${EventManager.ELEMENT_VARNAME} = this.__render.element;
185
+ const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;
186
+ const ${EventManager.RANGE_VARNAME} = this.__render.range;
187
+ const ${EventManager.ROUTER_VARNAME} = this.__render.router;
188
+ const ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;
189
+ const ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;
190
+ const ${EventManager.SCRIPT_UTILS_VARNAME} = this.__render.scriptUtils;
191
+ const ${EventManager.ROOT_OBJECT_VARNAME} = this.__render.rootObject;
192
+ `
193
+ });
194
+ // const normalAttribute = attribute[EventManager.normalAttrMapAttrName];
195
+ // if (normalAttribute) {
196
+ // new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {
197
+ // const cval = ScriptUtils.evalReturn({ bodyScript: __render.bindScript, returnScript: v }, Object.assign(obj, { __render: __render }));
198
+ // console.log('-----------',v,k, cval);
199
+ // attribute[v] = cval;
200
+ // });
201
+ // }
202
+ const fag = config.window.document.createDocumentFragment();
203
+ if (cNode.nodeType === Node.TEXT_NODE && cNode.textContent) {
204
+ // console.log('text-->', this, obj, config, cNode.textContent);
205
+ // console.log('text-->', Array.from(this.fragment.childNodes))
206
+ const textContent = cNode.textContent;
207
+ const runText = RawSet.expressionGroups(textContent)[0][1];
208
+ // console.log('--->', RawSet.exporesionGrouops(textContent), textContent,runText, runText[0][1])
209
+ let newNode;
210
+ if (textContent === null || textContent === void 0 ? void 0 : textContent.startsWith('#')) {
211
+ const r = ScriptUtils.eval(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
212
+ const template = config.window.document.createElement('template');
213
+ template.innerHTML = r;
214
+ newNode = template.content;
215
+ }
216
+ else {
217
+ const r = ScriptUtils.eval(`${__render.bindScript} return ${runText}`, Object.assign(obj, { __render }));
218
+ newNode = config.window.document.createTextNode(r);
219
+ }
220
+ (_a = cNode.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(newNode, cNode);
221
+ // console.log('-------', this.point.start.parentNode.nodeName)
222
+ // 중요 style value change 됐을때 다시 처리해야되기떄문에: 마지막에 completed 없는 attr 가지고 판단 하니깐
223
+ if (this.type === RawSetType.STYLE_TEXT && this.point.parent) {
224
+ this.point.parent.removeAttribute('completed');
225
+ }
226
+ }
227
+ else if (cNode.nodeType === Node.ELEMENT_NODE) {
228
+ const element = cNode;
229
+ // console.log('target-->', element)
230
+ const drAttr = {
231
+ dr: this.getAttributeAndDelete(element, RawSet.DR_NAME),
232
+ drIf: this.getAttributeAndDelete(element, RawSet.DR_IF_NAME),
233
+ drFor: this.getAttributeAndDelete(element, RawSet.DR_FOR_NAME),
234
+ drForOf: this.getAttributeAndDelete(element, RawSet.DR_FOR_OF_NAME),
235
+ drThisProperty: this.getAttributeAndDelete(element, RawSet.DR_THIS_PROPERTY_NAME),
236
+ drAppender: this.getAttributeAndDelete(element, RawSet.DR_APPENDER_NAME),
237
+ drRepeat: this.getAttributeAndDelete(element, RawSet.DR_REPEAT_NAME),
238
+ drThis: this.getAttributeAndDelete(element, RawSet.DR_THIS_NAME),
239
+ drForm: this.getAttributeAndDelete(element, RawSet.DR_FORM_NAME),
240
+ drPre: this.getAttributeAndDelete(element, RawSet.DR_PRE_NAME),
241
+ drInnerHTML: this.getAttributeAndDelete(element, RawSet.DR_INNERHTML_NAME),
242
+ drInnerText: this.getAttributeAndDelete(element, RawSet.DR_INNERTEXT_NAME),
243
+ drStripElement: this.getAttributeAndDelete(element, RawSet.DR_STRIP_NAME),
244
+ drReplaceTargetElementIs: this.getAttributeAndDelete(element, RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME),
245
+ drItOption: this.getAttributeAndDelete(element, RawSet.DR_IT_OPTIONNAME),
246
+ drVarOption: this.getAttributeAndDelete(element, RawSet.DR_VAR_OPTIONNAME),
247
+ drNextOption: this.getAttributeAndDelete(element, RawSet.DR_NEXT_OPTIONNAME),
248
+ drAfterOption: this.getAttributeAndDelete(element, RawSet.DR_AFTER_OPTIONNAME),
249
+ drBeforeOption: this.getAttributeAndDelete(element, RawSet.DR_BEFORE_OPTIONNAME),
250
+ drCompleteOption: this.getAttributeAndDelete(element, RawSet.DR_COMPLETE_OPTIONNAME),
251
+ drStripOption: this.getAttributeAndDelete(element, RawSet.DR_STRIP_OPTIONNAME),
252
+ drDestroyOption: this.getAttributeAndDelete(element, RawSet.DR_DESTROY_OPTIONNAME),
253
+ drKeyOption: this.getAttributeAndDelete(element, RawSet.DR_KEY_OPTIONNAME)
254
+ };
255
+ drAttrs.push(drAttr);
256
+ // 아래 순서 중요
257
+ const operators = [
258
+ new DrPre(this, __render, { raws, fag }, { element, attrName: RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr }, { config, obj, operatorAround: (_b = config.operatorAround) === null || _b === void 0 ? void 0 : _b.drPre }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
259
+ new Dr(this, __render, { raws, fag }, { element, attrName: RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr }, { config, obj, operatorAround: (_c = config.operatorAround) === null || _c === void 0 ? void 0 : _c.dr }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
260
+ // new Dr(this, __render, {raws, fag}, {element, attrName: EventManager.onRenderedInitAttrName, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),
261
+ new DrIf(this, __render, { raws, fag }, { element, attrName: RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr }, { config, obj, operatorAround: (_d = config.operatorAround) === null || _d === void 0 ? void 0 : _d.drIf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
262
+ new DrStripElement(this, __render, { raws, fag }, { element, attrName: RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr }, { config, obj, operatorAround: (_e = config.operatorAround) === null || _e === void 0 ? void 0 : _e.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
263
+ new DrThis(this, __render, { raws, fag }, { element, attrName: RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr }, { config, obj, operatorAround: (_f = config.operatorAround) === null || _f === void 0 ? void 0 : _f.drThis }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
264
+ new DrForm(this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr }, { config, obj, operatorAround: (_g = config.operatorAround) === null || _g === void 0 ? void 0 : _g.drForm }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
265
+ new DrInnerText(this, __render, { raws, fag }, { element, attrName: RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr }, { config, obj, operatorAround: (_h = config.operatorAround) === null || _h === void 0 ? void 0 : _h.drInnerText }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
266
+ new DrInnerHTML(this, __render, { raws, fag }, { element, attrName: RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr }, { config, obj, operatorAround: (_j = config.operatorAround) === null || _j === void 0 ? void 0 : _j.drInnerHTML }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
267
+ new DrFor(this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr }, { config, obj, operatorAround: (_k = config.operatorAround) === null || _k === void 0 ? void 0 : _k.drFor }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
268
+ new DrForOf(this, __render, { raws, fag }, { element, attrName: RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr }, { config, obj, operatorAround: (_l = config.operatorAround) === null || _l === void 0 ? void 0 : _l.drForOf }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
269
+ new DrThisProperty(this, __render, { raws, fag }, { element, attrName: RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr }, { config, obj, operatorAround: (_m = config.operatorAround) === null || _m === void 0 ? void 0 : _m.drThisProperty }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
270
+ new DrAppender(this, __render, { raws, fag }, { element, attrName: RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr }, { config, obj, operatorAround: (_o = config.operatorAround) === null || _o === void 0 ? void 0 : _o.drAppender }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
271
+ new DrRepeat(this, __render, { raws, fag }, { element, attrName: RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr }, { config, obj, operatorAround: (_p = config.operatorAround) === null || _p === void 0 ? void 0 : _p.drRepeat }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
272
+ 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 }),
273
+ new DrTargetElement(this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
274
+ new DrTargetAttr(this, __render, { raws, fag }, { element, attrs: drAttr }, { config, obj }, { onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks }),
275
+ ];
276
+ for (const operator of operators) {
277
+ const state = yield operator.start();
278
+ if (state === ExecuteState.EXECUTE) {
279
+ break;
280
+ }
281
+ else if (state === ExecuteState.STOP) {
282
+ return raws;
283
+ }
284
+ }
285
+ }
286
+ }
287
+ this.point.childrenRawSets = raws;
288
+ raws.forEach(it => {
289
+ it.point.parentRawSet = this;
290
+ });
291
+ // console.log('pppppppppppppp', this);
292
+ // replaceBody와 applyEvent 순서를 바꿨다 20250511
293
+ const childrenNodes = Array.from(genNode.childNodes);
294
+ this.applyEvent(obj, genNode, config);
295
+ this.replaceBody(genNode); // 중요 여기서 마지막에 연션된 값을 그려준다.
296
+ // console.log('rawSEt!!!!!!!', obj,childrenNodes,config)
297
+ this.onRenderedEvent(obj, childrenNodes, config);
298
+ drAttrs.forEach(it => {
299
+ if (it.drCompleteOption) {
300
+ // genNode.childNodes
301
+ const render = Object.freeze({
302
+ rawSet: this,
303
+ fag: genNode,
304
+ scripts: EventManager.setBindProperty(config === null || config === void 0 ? void 0 : config.scripts, obj)
305
+ });
306
+ ScriptUtils.eval(`
307
+ const ${EventManager.FAG_VARNAME} = this.__render.fag;
308
+ const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;
309
+ const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
310
+ ${it.drCompleteOption}`, Object.assign(obj, { __render: render }));
311
+ }
312
+ });
313
+ // 중요 style isolation 나중에 :scope로 대체 가능할듯.
314
+ // 2023.9.4일 없앰 style 처음들어올때 처리하는걸로 바꿈
315
+ // RawSet.generateStyleSheetsLocal(config);
316
+ for (const it of onThisComponentSetCallBacks) {
317
+ if (isOnInitRender(it.obj)) {
318
+ (_r = (_q = it.obj) === null || _q === void 0 ? void 0 : _q.onInitRender) === null || _r === void 0 ? void 0 : _r.call(_q, {}, this);
319
+ }
320
+ }
321
+ for (const it of onElementInitCallBacks) {
322
+ if (isOnInitRender(this.dataSet.render.currentThis)) {
323
+ // TODO: 나중에 파라미터 들어가야될듯. 지금은 리팩토링하느라 빠짐
324
+ // console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', it, this.dataSet);
325
+ // dr-on-init:arguments
326
+ // if (isOnInitRender()) {
327
+ // it.targetElement.__render.component.onInitRender?.(...param);
328
+ // }
329
+ // if (it.targetElement?.__render?.element && it.targetElement?.__render?.component) {
330
+ // const oninit = it.targetElement.__render.element.getAttribute(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME); // dr-on-component-init
331
+ // let param = [];
332
+ // if (oninit) {
333
+ // const script = `${it.targetElement.__render.renderScript} return ${oninit} `;
334
+ // param = ScriptUtils.eval(script, Object.assign(obj, {
335
+ // __render: it.targetElement.__render
336
+ // }));
337
+ // if (!Array.isArray(param)) {
338
+ // param = [param];
339
+ // }
340
+ // }
341
+ //
342
+ // if (isOnInitRender(it.targetElement.__render.component)) {
343
+ // it.targetElement.__render.component.onInitRender?.(...param);
344
+ // }
345
+ // }
346
+ this.dataSet.render.currentThis.onInitRender({}, this);
347
+ }
348
+ (_s = config === null || config === void 0 ? void 0 : config.onElementInit) === null || _s === void 0 ? void 0 : _s.call(config, it.name, obj, this, it.targetElement);
349
+ }
350
+ // TODO: 이부분도 위에 targetElement 처럼 해야될까?
351
+ for (const it of onAttrInitCallBacks) {
352
+ (_t = config === null || config === void 0 ? void 0 : config.onAttrInit) === null || _t === void 0 ? void 0 : _t.call(config, it.attrName, it.attrValue, obj, this);
353
+ }
354
+ // component destroy
355
+ if (obj.__domrender_components) {
356
+ Object.entries(obj.__domrender_components).forEach(([key, value]) => {
357
+ var _a, _b;
358
+ const rawSet = value.__rawSet;
359
+ const drAttrs = rawSet === null || rawSet === void 0 ? void 0 : rawSet.dataSet.render.attribute;
360
+ if (rawSet && !rawSet.isConnected) {
361
+ const destroyOptions = (_b = (_a = drAttrs === null || drAttrs === void 0 ? void 0 : drAttrs.drDestroyOption) === null || _a === void 0 ? void 0 : _a.split(',')) !== null && _b !== void 0 ? _b : [];
362
+ RawSet.destroy(obj.__domrender_components[key], { rawSet: rawSet }, config, destroyOptions);
363
+ delete obj.__domrender_components[key];
364
+ }
365
+ });
366
+ }
367
+ // console.log('-------raws',raws)
368
+ return raws;
369
+ });
370
+ }
371
+ // 중요 스타일 적용 부분
372
+ static generateRuleSelector(start, end, sit) {
373
+ const selectorText = `:is(${start} ~ *:not(${start} ~ ${end} ~ *))`;
374
+ if (sit.startsWith('## ')) {
375
+ return sit.replace(/^## /, '');
376
+ }
377
+ else if (sit.startsWith('.')) {
378
+ return `${selectorText}${sit}, ${selectorText} ${sit}`;
379
+ }
380
+ else if (sit.includes('::')) {
381
+ const reg = sit.match(/(.*)::(.*)$/);
382
+ const first = reg === null || reg === void 0 ? void 0 : reg[1];
383
+ const extracted = reg === null || reg === void 0 ? void 0 : reg[2];
384
+ const divText = `${start} ~ ${first}:not(${start} ~ ${end} ~ *)`;
385
+ return `${selectorText} ${first}, ${divText}::${extracted}`;
386
+ }
387
+ else {
388
+ const divText = `${start} ~ ${sit}:not(${start} ~ ${end} ~ *)`;
389
+ return `${selectorText} ${sit}, ${divText}`;
390
+ }
391
+ }
392
+ static generateStyleTransform(styleBody, componentKey, styleTagWrap = true) {
393
+ var _a;
394
+ // console.log('style!!!!!!!!!!!!!!!!1', styleBody, componentKey, styleTagWrap);
395
+ if (Array.isArray(styleBody)) {
396
+ styleBody = styleBody.join('\n');
397
+ }
398
+ styleBody = styleBody.replaceAll('#uuid#', componentKey);
399
+ const start = `#${componentKey}-start`;
400
+ const end = `#${componentKey}-end`;
401
+ // 이거뭐하는지 까먹었네 뭐였지??..
402
+ // 동적으로 처리하는것같은데.. css 에서는 동적으로 처리하는걸 지향 해야될것같은데 이기능 deprecated 할지 고민중
403
+ const before = StringUtils.regexExecArrayReplace(styleBody, /(\$\{.*?\}\$)/g, (data) => {
404
+ // console.log('동적?', `var(--domrender-${data[0]})`)
405
+ return `var(--domrender-${data[0]})`;
406
+ });
407
+ // const before = styleBody;
408
+ // console.log('before@@@@@@@@@@@', before)
409
+ const cssobject = cssParse(before);
410
+ (_a = cssobject.stylesheet) === null || _a === void 0 ? void 0 : _a.rules.forEach((rule) => {
411
+ var _a, _b, _c;
412
+ // console.log('--------cssParse', rule)
413
+ const isRoot = (_a = rule.selectors) === null || _a === void 0 ? void 0 : _a.find(it => it.startsWith(':root'));
414
+ if (rule.type === 'rule' && !isRoot) { // && !!isRoot
415
+ rule.selectors = (_b = rule.selectors) === null || _b === void 0 ? void 0 : _b.map(sit => {
416
+ return this.generateRuleSelector(start, end, sit);
417
+ });
418
+ }
419
+ else if (rule.type === 'media' && !isRoot) {
420
+ (_c = rule.rules) === null || _c === void 0 ? void 0 : _c.forEach((mediaRule) => {
421
+ var _a;
422
+ mediaRule.selectors = (_a = mediaRule.selectors) === null || _a === void 0 ? void 0 : _a.map(sit => {
423
+ return this.generateRuleSelector(start, end, sit);
424
+ });
425
+ // console.log('--------', mediaRule, mediaRule.selectors)
426
+ });
427
+ }
428
+ });
429
+ const stringify = cssStringify(cssobject);
430
+ // let after = StringUtils.regexExecArrayReplace(stringify as string, /(var\(--domrender-(\$\{.*?\}\$)?\))/g, (data) => {
431
+ // return data[2];
432
+ // });
433
+ let after = stringify;
434
+ // console.log('after@@@@@@@@@@@', after)
435
+ // 여기서 선언 selector 자체에도 처리가능하도록 한다 20250518
436
+ after = after.replaceAll('/*$', '${');
437
+ after = after.replaceAll('$*/', '}$');
438
+ if (styleTagWrap) {
439
+ styleBody = `<style id='${componentKey}-style' domstyle>${after}</style>`;
440
+ }
441
+ // console.log('style!!!!!!!!!!!!!!2', styleBody);
442
+ return styleBody;
443
+ }
444
+ applyEvent(obj, fragment = this.dataSet.fragment, config) {
445
+ eventManager.applyEvent(obj, eventManager.findAttrElements(fragment, config), config);
446
+ }
447
+ onRenderedEvent(obj, nodes, config) {
448
+ eventManager.onRenderedEvent(obj, nodes, config);
449
+ }
450
+ getAttribute(element, attr) {
451
+ const data = element.getAttribute(attr);
452
+ return data;
453
+ }
454
+ getAttributeAndDelete(element, attr) {
455
+ const data = element.getAttribute(attr);
456
+ // if (data)
457
+ // element.setAttribute(`origin-${attr}`, data);
458
+ element.removeAttribute(attr);
459
+ return data;
460
+ }
461
+ getDrAppendAttributeAndDelete(element, obj) {
462
+ let data = element.getAttribute(RawSet.DR_APPENDER_NAME);
463
+ // if (data && !/\[[0-9]+\]/g.test(data)) {
464
+ if (data && !/\[.+\]/g.test(data)) {
465
+ const currentIndex = ScriptUtils.evalReturn(`${data}?.length -1`, obj);
466
+ // console.log('------?', currentIndex)
467
+ // if (currentIndex === undefined || isNaN(currentIndex)) {
468
+ // return undefined;
469
+ // }
470
+ // const currentIndex = ScriptUtils.evalReturn(`${data}.length`, obj);
471
+ data = `${data}[${currentIndex}]`;
472
+ element.setAttribute(RawSet.DR_APPENDER_NAME, data);
473
+ // element.setAttribute(RawSet.DR_IF_NAME, data);
474
+ // element.setAttribute('dr-id', data);
475
+ // console.log('-->', element)
476
+ }
477
+ // if (data && !/\.childs\[[0-9]+\]/g.test(data)) {
478
+ // const currentIndex = ScriptUtils.evalReturn(`${data}.currentIndex`, obj);
479
+ // data = `${data}.childs[${currentIndex}]`;
480
+ // element.setAttribute(RawSet.DR_APPENDER_NAME, data)
481
+ // }
482
+ element.removeAttribute(RawSet.DR_APPENDER_NAME);
483
+ return data;
484
+ }
485
+ replaceBody(genNode) {
486
+ var _a;
487
+ this.childAllRemove();
488
+ (_a = this.point.start.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(genNode, this.point.start.nextSibling); // 중요 start checkpoint 다음인 end checkpoint 앞에 넣는다. 즉 중간 껴넣기 (나중에 meta tag로 변경을 해도될듯하긴한데..)
489
+ }
490
+ // 중요 important
491
+ static checkPointCreates(element, obj, config) {
492
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
493
+ // console.log('!@@@@@@@@@@@@@@@@', obj);
494
+ // const NodeFilter = (config.window as any).NodeFilter;
495
+ // const thisVariableName = (element as any).__domrender_this_variable_name;
496
+ // console.log('thisVariableName---', thisVariableName);
497
+ const nodeIterator = config.window.document.createNodeIterator(element, NodeFilter.SHOW_ALL, {
498
+ acceptNode(node) {
499
+ var _a, _b, _c, _d, _e, _f;
500
+ // console.log('nodeType', node.nodeType, (node as any).tagName, (node as any).data);
501
+ if (node.nodeType === Node.TEXT_NODE) {
502
+ // console.log('text--->', node.textContent)
503
+ // console.log('????????', node.parentElement, node.parentElement?.getAttribute('dr-pre'));
504
+ // console.log('???????/',node.textContent, node.parentElement?.getAttribute('dr-pre'))
505
+ // TODO: 나중에
506
+ // const between = StringUtils.betweenRegexpStr('[$#]\\{', '\\}', StringUtils.deleteEnter((node as Text).data ?? ''))
507
+ const between = RawSet.expressionGroups(StringUtils.deleteEnter((_a = node.data) !== null && _a !== void 0 ? _a : ''));
508
+ // console.log('bbbb', between)
509
+ return (between === null || between === void 0 ? void 0 : between.length) > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
510
+ // return /\$\{.*?\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
511
+ // return /[$#]\{.*?\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
512
+ }
513
+ else if (node.nodeType === Node.ELEMENT_NODE) {
514
+ const element = node;
515
+ if (element.hasAttribute(RawSet.DR_PRE_NAME)) {
516
+ return NodeFilter.FILTER_REJECT;
517
+ }
518
+ if (element.hasAttribute(EventManager.attrAttrName)) {
519
+ const script = (_b = element.getAttribute(EventManager.attrAttrName)) !== null && _b !== void 0 ? _b : '';
520
+ // console.log('scriptscriptscriptscriptscriptscript,', script)
521
+ const keyValuePairs = Array.from(script.matchAll(/(\w+):\s*([^,}]+)/g)).map(match => ({ key: match[1], value: match[2] }));
522
+ (keyValuePairs !== null && keyValuePairs !== void 0 ? keyValuePairs : []).forEach(it => {
523
+ element.setAttribute(it.key, '${' + it.value + '}$');
524
+ });
525
+ // console.log('-------k', keyValuePairs)
526
+ // const drAttr = ScriptUtils.evalReturn(script, obj)
527
+ // Object.entries(drAttr).forEach(([key, value]) => {
528
+ // const keyValuePairs = Array.from(a.matchAll(/(\w+):\s*([^,}]+)/g)).map(match => ({ key: match[1], value: match[2] }));
529
+ // console.log(keyValuePairs);
530
+ // // 출력: [{ key: 'value', value: 'this.child.obj.name' }, { key: 'wow', value: 'this.ww' }, { key: 'zz', value: '22' }, { key: 'v', value: '"ee"' }]
531
+ //
532
+ // console.log('-----------------', key,value)
533
+ // element.setAttribute(key, '${'+(value)+'}$');
534
+ // })
535
+ // EventManager.attrNames.filter(it => it in drAttr).forEach(it => {
536
+ // if (drAttr[it] === null) {
537
+ // element.removeAttribute(it);
538
+ // } else {
539
+ // element.setAttribute(it, drAttr[it]);
540
+ // }
541
+ // })
542
+ // console.log('-------->', Array.from(element.attributes), element.getAttribute('dr-attr'), obj)
543
+ }
544
+ // element.setAttribute('dr-event-click', 'console.log(11)');
545
+ const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);
546
+ const targetElementNames = (_d = (_c = config.targetElements) === null || _c === void 0 ? void 0 : _c.map(it => it.name.toLowerCase())) !== null && _d !== void 0 ? _d : [];
547
+ const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs === null || targetElementIs === void 0 ? void 0 : targetElementIs.toLowerCase());
548
+ // if (isElement) {
549
+ // (element as HTMLElement).style.display = 'none';
550
+ // (element as HTMLElement).style.width = '100px';
551
+ // (element as HTMLElement).style.height = '100px';
552
+ // console.log((element as HTMLElement).outerHTML)
553
+ // }
554
+ // console.log('------targetElementIstargetElementIs>', targetElementNames, '---', isElement, targetElementIs);
555
+ // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES,...EventManager.RAWSET_CHECK_ATTRIBUTE]);
556
+ const targetAttrNames = ((_f = (_e = config.targetAttrs) === null || _e === void 0 ? void 0 : _e.map(it => it.name)) !== null && _f !== void 0 ? _f : []).concat([...RawSet.DR_ATTRIBUTES]);
557
+ const normalAttrs = new Map();
558
+ const linkVariables = new Map();
559
+ const linkNames = EventManager.linkAttrs.map(it => it.name);
560
+ const isAttr = element.getAttributeNames().filter(it => {
561
+ const value = element.getAttribute(it);
562
+ // link일때
563
+ if (linkNames.includes(it)) {
564
+ linkVariables.set(it, value);
565
+ }
566
+ else if (value && RawSet.isExpression(value)) { // 표현식있을떄
567
+ let variablePath = RawSet.expressionGroups(value)[0][1];
568
+ // normal Attribute 초반에 셋팅해주기.
569
+ variablePath = variablePath.replace(/#[^#]*#/g, '({})');
570
+ const cval = ScriptUtils.evalReturn(variablePath, Object.assign(obj));
571
+ if (cval === null) {
572
+ element.removeAttribute(it);
573
+ }
574
+ else {
575
+ element.setAttribute(it, cval);
576
+ }
577
+ normalAttrs.set(it, variablePath);
578
+ // console.log('normalAttribute', it, variablePath);
579
+ }
580
+ // console.log(element.getAttribute(it), attrExpresion);
581
+ const isTargetAttr = targetAttrNames.includes(it.toLowerCase());
582
+ return isTargetAttr;
583
+ }).length > 0;
584
+ if (linkVariables.size) {
585
+ element.setAttribute(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));
586
+ }
587
+ // 기본 attribute를 처리하기위해
588
+ if (normalAttrs.size) {
589
+ element.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));
590
+ }
591
+ // if (isElement) {
592
+ // element.setAttribute('www', '@this@');
593
+ // }
594
+ const r = (isAttr || isElement) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
595
+ return r;
596
+ }
597
+ return NodeFilter.FILTER_REJECT;
598
+ }
599
+ });
600
+ const pars = [];
601
+ let currentNode;
602
+ // eslint-disable-next-line no-cond-assign
603
+ while (currentNode = nodeIterator.nextNode()) {
604
+ if (currentNode.nodeType === Node.TEXT_NODE) {
605
+ const text = (_a = currentNode.textContent) !== null && _a !== void 0 ? _a : '';
606
+ const template = config.window.document.createElement('template');
607
+ // const a = StringUtils.regexExec(/\$\{.*?\}/g, text);
608
+ // const a = StringUtils.regexExec(/[$#]\{.*?\}/g, text);
609
+ // const a = StringUtils.betweenRegexpStr('[$#]\\{', '\\}', text); // <--TODO: 나중에..
610
+ const groups = RawSet.expressionGroups(text);
611
+ const map = groups.map(it => { var _a; return ({ uuid: `${RandomUtils.alphabet(40)}_${(_a = obj === null || obj === void 0 ? void 0 : obj.constructor) === null || _a === void 0 ? void 0 : _a.name}`, content: it[0], regexArr: it }); });
612
+ let lasterIndex = 0;
613
+ for (let i = 0; i < map.length; i++) {
614
+ const it = map[i];
615
+ // console.log('itttttttttttt', it);
616
+ const regexArr = it.regexArr;
617
+ // 중요: text경우 asdasd ${this.name}$ 이렇게 있다면 앞부분 asdasd <-- 이부분은 살려야되니깐 아래처럼 짜름
618
+ const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);
619
+ // const preparedText = regexArr[1];
620
+ // const start = config.window.document.createElement('meta');
621
+ // start.setAttribute('id', `${it.uuid}-start`);
622
+ // const end = config.window.document.createElement('meta');
623
+ // end.setAttribute('id', `${it.uuid}-end`);
624
+ let type;
625
+ if (currentNode.parentNode && currentNode.parentNode.nodeName.toUpperCase() === 'STYLE') {
626
+ type = RawSetType.STYLE_TEXT;
627
+ }
628
+ else {
629
+ type = RawSetType.TEXT;
630
+ }
631
+ const node = document.createTextNode(preparedText);
632
+ const startEndPoint = RawSet.createStartEndPoint({ id: it.uuid, type }, config);
633
+ // layout setting
634
+ // console.log('createTextNode', node);
635
+ template.content.append(node); // expression 앞 부분 넣어줘야 앞부분 일반 text 안짤린다.
636
+ template.content.append(startEndPoint.start); // add start checkpoint
637
+ template.content.append(startEndPoint.end); // add end checkpoint
638
+ // content 안쪽 RawSet render 할때 start 와 end 사이에 fragment 연산해서 들어간다.
639
+ const fragment = config.window.document.createDocumentFragment();
640
+ fragment.append(config.window.document.createTextNode(it.content));
641
+ // (startEndPoint.start as any).khh = RandomUtils.decimal(0,10)
642
+ pars.push(new RawSet(it.uuid, type, {
643
+ start: startEndPoint.start,
644
+ node: currentNode,
645
+ end: startEndPoint.end,
646
+ parent: currentNode.parentNode,
647
+ // thisVariableName: thisVariableName
648
+ }, { fragment: fragment, config: config }));
649
+ lasterIndex = regexArr.index + it.content.length;
650
+ }
651
+ template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));
652
+ (_b = currentNode === null || currentNode === void 0 ? void 0 : currentNode.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(template.content, currentNode); // <-- 여기서 text를 fragment로 replace했기때문에 추적 변경이 가능하다.
653
+ }
654
+ else if (currentNode.nodeType === Node.ELEMENT_NODE) {
655
+ const uuid = `${RandomUtils.alphabet(40)}___${(_c = obj === null || obj === void 0 ? void 0 : obj.constructor) === null || _c === void 0 ? void 0 : _c.name}`;
656
+ const element = currentNode;
657
+ const fragment = config.window.document.createDocumentFragment();
658
+ const elementType = RawSetType.TARGET_ELEMENT;
659
+ const startEndPoint = RawSet.createStartEndPoint({ node: element, id: uuid, type: elementType }, config);
660
+ // 여기서 등록한 component 추가한다.
661
+ const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);
662
+ const targetElementNames = (_e = (_d = config.targetElements) === null || _d === void 0 ? void 0 : _d.map(it => it.name.toLowerCase())) !== null && _e !== void 0 ? _e : [];
663
+ const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs === null || targetElementIs === void 0 ? void 0 : targetElementIs.toLowerCase());
664
+ // if (isElement) {
665
+ // (element as HTMLElement).style.display = 'none'
666
+ // }
667
+ // const isElement = targetElementNames.includes(element.tagName.toLowerCase());
668
+ const targetAttrNames = ((_g = (_f = config.targetAttrs) === null || _f === void 0 ? void 0 : _f.map(it => it.name)) !== null && _g !== void 0 ? _g : []).concat(RawSet.DR_ATTRIBUTES);
669
+ const isAttr = element.getAttributeNames().filter(it => targetAttrNames.includes(it.toLowerCase())).length > 0;
670
+ (_h = currentNode === null || currentNode === void 0 ? void 0 : currentNode.parentNode) === null || _h === void 0 ? void 0 : _h.insertBefore(startEndPoint.start, currentNode);
671
+ (_j = currentNode === null || currentNode === void 0 ? void 0 : currentNode.parentNode) === null || _j === void 0 ? void 0 : _j.insertBefore(startEndPoint.end, currentNode.nextSibling);
672
+ fragment.append(currentNode);
673
+ // const tempDiv = document.createElement('div');
674
+ // tempDiv.appendChild(fragment.cloneNode(true)); // fragment 복사본 추가
675
+ // console.log('------',tempDiv.innerHTML);
676
+ // console.log();
677
+ const rawSet = new RawSet(uuid, isElement ? elementType : (isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN), {
678
+ start: startEndPoint.start,
679
+ node: currentNode,
680
+ end: startEndPoint.end,
681
+ parent: currentNode.parentNode,
682
+ // thisVariableName: thisVariableName
683
+ }, { config: config, fragment: fragment });
684
+ pars.push(rawSet);
685
+ }
686
+ }
687
+ // console.log('parsparsparsparsparsparsparsparsparspars', pars);
688
+ return pars;
689
+ }
690
+ static createStartEndPoint(data, config) {
691
+ if (data.type === RawSetType.TARGET_ELEMENT && data.node) {
692
+ const element = data.node;
693
+ const start = config.window.document.createElement('meta');
694
+ const end = config.window.document.createElement('meta');
695
+ start.setAttribute('id', `${data.id}-start`);
696
+ start.setAttribute('dr-start-point', '');
697
+ const keys = element.getAttribute(RawSet.DR_KEY_OPTIONNAME);
698
+ const thisPropertyType = element.getAttribute(RawSet.DR_THIS_PROPERTY_NAME);
699
+ if (thisPropertyType) {
700
+ start.setAttribute('type', RawSetOperatorType.DR_THIS_PROPERTY);
701
+ }
702
+ if (keys) {
703
+ element.removeAttribute(RawSet.DR_KEY_OPTIONNAME);
704
+ start.setAttribute(RawSet.DR_KEY_OPTIONNAME, keys);
705
+ }
706
+ end.setAttribute('id', `${data.id}-end`);
707
+ end.setAttribute('dr-end-point', '');
708
+ return { start, end };
709
+ }
710
+ else if (data.type === RawSetType.STYLE_TEXT) {
711
+ return {
712
+ start: config.window.document.createTextNode(`/*start text ${data.id}*/`),
713
+ end: config.window.document.createTextNode(`/*end text ${data.id}*/`)
714
+ };
715
+ }
716
+ else { // text
717
+ return {
718
+ start: config.window.document.createComment(`start text ${data.id}`),
719
+ end: config.window.document.createComment(`end text ${data.id}`)
720
+ };
721
+ }
722
+ }
723
+ remove() {
724
+ this.childAllRemove();
725
+ this.point.end.remove();
726
+ this.point.start.remove();
727
+ }
728
+ childAllRemove() {
729
+ let next = this.point.start.nextSibling;
730
+ while (next) {
731
+ if (next === this.point.end) {
732
+ break;
733
+ }
734
+ next.remove();
735
+ next = this.point.start.nextSibling;
736
+ }
737
+ }
738
+ childs(stopNext) {
739
+ const childs = [];
740
+ let next = this.point.start.nextSibling;
741
+ while (next && next !== this.point.end) {
742
+ if (stopNext === null || stopNext === void 0 ? void 0 : stopNext(next)) {
743
+ return;
744
+ }
745
+ childs.push(next);
746
+ next = next.nextSibling;
747
+ }
748
+ return childs;
749
+ }
750
+ getHasRawSet(key) {
751
+ let rawSet;
752
+ this.childs((node) => {
753
+ var _a, _b;
754
+ const drKey = (_b = (_a = node).getAttribute) === null || _b === void 0 ? void 0 : _b.call(_a, RawSet.DR_KEY_OPTIONNAME);
755
+ if (drKey && drKey === key) {
756
+ rawSet = node.rawSet;
757
+ return true;
758
+ }
759
+ return false;
760
+ });
761
+ return rawSet;
762
+ }
763
+ static drItOtherEncoding(element, postFix) {
764
+ const random = RandomUtils.uuid() + postFix;
765
+ const regex = /#it#/g;
766
+ element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {
767
+ it.innerHTML = it.innerHTML.replace(regex, random);
768
+ });
769
+ return random;
770
+ }
771
+ static drItOtherDecoding(element, random) {
772
+ element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {
773
+ it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');
774
+ });
775
+ }
776
+ static drVarDecoding(element, vars) {
777
+ element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {
778
+ vars.filter(vit => vit.value && vit.name).forEach(vit => {
779
+ it.innerHTML = it.innerHTML.replace(RegExp(vit.random, 'g'), vit.value);
780
+ });
781
+ });
782
+ }
783
+ static replaceInnerHTML(element, config) {
784
+ var _a;
785
+ const innerHTML = element.innerHTML;
786
+ const tobe = config.toBe = (_a = config.toBe) !== null && _a !== void 0 ? _a : RandomUtils.uuid();
787
+ if (config.asIs instanceof RegExp) {
788
+ element.innerHTML = innerHTML.replace(config.asIs, config.toBe);
789
+ }
790
+ else {
791
+ element.innerHTML = innerHTML.replaceAll(config.asIs, config.toBe);
792
+ }
793
+ return tobe;
794
+ }
795
+ static drThisEncoding(element, drThis, config) {
796
+ var _a;
797
+ const thisRandom = config.toBe = (_a = config === null || config === void 0 ? void 0 : config.toBe) !== null && _a !== void 0 ? _a : RandomUtils.uuid();
798
+ // const thisRegex = /(?<!(dr-|\.))this(?=.?)/g;
799
+ // const thisRegex = /[^(dr\-)]this(?=.?)/g;
800
+ // const thisRegex = /[^(dr\-)]this\./g;
801
+ // safari 때문에 전위 검색 regex가 안됨 아 짜증나서 이걸로함.
802
+ // element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {
803
+ // let message = it.innerHTML;
804
+ // })
805
+ element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {
806
+ it.innerHTML = it.innerHTML.replace(config.asIs, thisRandom);
807
+ });
808
+ element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {
809
+ // console.log('rrrrrrrrand?', drThis,config);
810
+ let message = it.innerHTML;
811
+ // StringUtils.regexExec(/([^(dr\-)])?this(?=.?)/g, message).reverse().forEach(it => {
812
+ StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {
813
+ var _a;
814
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${(_a = it[1]) !== null && _a !== void 0 ? _a : ''}${drThis}`);
815
+ });
816
+ it.innerHTML = message;
817
+ });
818
+ // console.log('changggg', element.innerHTML);
819
+ let message = element.innerHTML;
820
+ StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {
821
+ var _a;
822
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${(_a = it[1]) !== null && _a !== void 0 ? _a : ''}${drThis}`);
823
+ });
824
+ element.innerHTML = message;
825
+ return thisRandom;
826
+ }
827
+ static drThisBindEncoding(element, variable, config) {
828
+ element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(eIt => {
829
+ let message = eIt.innerHTML;
830
+ // StringUtils.regexExec(/([^(dr\-)])?this(?=.?)/g, message).reverse().forEach(it => {
831
+ StringUtils.regexExec(variable, message).reverse().forEach(it => {
832
+ var _a;
833
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${(_a = it[1]) !== null && _a !== void 0 ? _a : ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);
834
+ });
835
+ eIt.innerHTML = message;
836
+ });
837
+ const targetElementNames = config.config.targetElements.map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:')).join(',');
838
+ const thisRandom = RandomUtils.uuid();
839
+ element.querySelectorAll(targetElementNames).forEach(it => {
840
+ it.innerHTML = it.innerHTML.replace(variable, thisRandom);
841
+ });
842
+ element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {
843
+ it.innerHTML = it.innerHTML.replace(variable, thisRandom);
844
+ });
845
+ if (config.otherReplaceVariablePath) {
846
+ let message = element.innerHTML;
847
+ StringUtils.regexExec(variable, message).reverse().forEach(it => {
848
+ var _a;
849
+ message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${(_a = it[1]) !== null && _a !== void 0 ? _a : ''}${config.otherReplaceVariablePath}`);
850
+ });
851
+ element.innerHTML = message;
852
+ }
853
+ return thisRandom;
854
+ }
855
+ static drThisBindDecoding(element, config) {
856
+ const targetElementNames = config.config.targetElements.map(it => it.name.replaceAll('.', '\\.').replaceAll(':', '\\:')).join(',');
857
+ element.querySelectorAll(targetElementNames).forEach(it => {
858
+ it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);
859
+ });
860
+ element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {
861
+ it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);
862
+ });
863
+ }
864
+ static drThisDecoding(element, config) {
865
+ element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {
866
+ it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);
867
+ });
868
+ element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {
869
+ it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);
870
+ });
871
+ }
872
+ static drFormOtherMoveAttr(element, as, to, config) {
873
+ element.querySelectorAll(`[${RawSet.DR_FORM_NAME}]`).forEach(subElement => {
874
+ var _a;
875
+ const nodeIterator = config.window.document.createNodeIterator(subElement, NodeFilter.SHOW_ELEMENT, {
876
+ acceptNode(node) {
877
+ if (node.nodeType === Node.ELEMENT_NODE) {
878
+ const element = node;
879
+ return element.hasAttribute(as) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
880
+ }
881
+ else {
882
+ return NodeFilter.FILTER_REJECT;
883
+ }
884
+ }
885
+ });
886
+ let node;
887
+ // eslint-disable-next-line no-cond-assign
888
+ while (node = nodeIterator.nextNode()) {
889
+ const element = node;
890
+ element.setAttribute(to, (_a = element.getAttribute(as)) !== null && _a !== void 0 ? _a : '');
891
+ element.removeAttribute(as);
892
+ }
893
+ });
894
+ }
895
+ static drVarEncoding(element, drVarOption) {
896
+ var _a;
897
+ const vars = ((_a = drVarOption === null || drVarOption === void 0 ? void 0 : drVarOption.split(',')) !== null && _a !== void 0 ? _a : []).map(it => {
898
+ var _a, _b;
899
+ const s = it.trim().split('=');
900
+ const name = (_a = s[0]) === null || _a === void 0 ? void 0 : _a.trim();
901
+ const value = (_b = s[1]) === null || _b === void 0 ? void 0 : _b.trim();
902
+ return {
903
+ name,
904
+ value,
905
+ // regex: RegExp('(?<!(dr-|\\.))var\\.' + s[0] + '(?=.?)', 'g'),
906
+ regex: RegExp('\\$var\\.' + name + '(?=.?)', 'g'),
907
+ random: RandomUtils.uuid()
908
+ };
909
+ });
910
+ // console.log('asd', element.innerHTML);
911
+ // element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {
912
+ element.querySelectorAll(`[${RawSet.DR_VAR_OPTIONNAME}]`).forEach(it => {
913
+ vars.filter(vit => vit.value && vit.name).forEach(vit => {
914
+ it.innerHTML = it.innerHTML.replace(vit.regex, vit.random);
915
+ });
916
+ });
917
+ vars.filter(vit => vit.value && vit.name).forEach(vit => {
918
+ element.innerHTML = element.innerHTML.replace(vit.regex, vit.value);
919
+ });
920
+ return vars;
921
+ }
922
+ static drThisCreate(rawSet, element, drThis, drVarOption, drStripOption, obj, config, set) {
923
+ return __awaiter(this, void 0, void 0, function* () {
924
+ var _a, _b, _c, _d, _e;
925
+ var _f;
926
+ // console.log('ttttttttttttttttttttt',element.innerHTML, drThis, set, obj);
927
+ const fag = config.window.document.createDocumentFragment();
928
+ const targetElement = element.cloneNode(true);
929
+ let targetObj = obj;
930
+ if (set) {
931
+ targetObj = set.obj;
932
+ set.setTemplateStyle(yield RawSet.fetchTemplateStyle(set));
933
+ const style = RawSet.generateStyleTransform((_a = set.styles) !== null && _a !== void 0 ? _a : [], rawSet.uuid, true);
934
+ targetElement.innerHTML = style + ((_b = set.template) !== null && _b !== void 0 ? _b : '');
935
+ }
936
+ else {
937
+ targetObj = ScriptUtils.evalReturn(drThis, obj);
938
+ }
939
+ const componentKey = rawSet.uuid;
940
+ const renderScript = ` /*drThisCreate*/
941
+ // console.log('-----', this.__render);
942
+ var ${EventManager.RENDER_VARNAME} = this.__render;
943
+ var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
944
+ var ${EventManager.COMPONENT_VARNAME} = this.__render.component;
945
+ var ${EventManager.ELEMENT_VARNAME} = this.__render.element;
946
+ var ${EventManager.ROUTER_VARNAME} = this.__render.router;
947
+ var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML;
948
+ var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;
949
+ var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath;
950
+ var ${EventManager.CURRENT_THIS_VARNAME} = this.__render.currentThis;
951
+ var ${EventManager.CURRENT_THIS_PATH_VARNAME} = this.__render.currentThisPath;
952
+ var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;
953
+ var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath;
954
+ var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;
955
+ var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;
956
+ `;
957
+ const parentThisPath = rawSet.findParentThisPath();
958
+ const parentThis = rawSet.findParentThis(obj);
959
+ const nearThisPath = rawSet.findNearThisPath();
960
+ const nearThis = rawSet.findNearThis(obj);
961
+ // console.log('ttttttttttttttttt',parentThisPath, parentThis, nearThisPath, nearThis);
962
+ // console.log('-element.innerHTMLelement.innerHTMLelement.innerHTML',element.innerHTML);
963
+ let render = {
964
+ renderScript: renderScript,
965
+ element: element,
966
+ getElement: () => config.window.document.querySelector(`[class*="${rawSet.uuid}"]`),
967
+ innerHTML: element.innerHTML,
968
+ // attribute: ObjectUtils.toDeleteKey(attribute, [...Object.values(RawSet.drAttrsOriginName), ...Object.values(EventManager.VARNAMES)]),
969
+ rawSet: rawSet,
970
+ router: config.router,
971
+ componentKey: componentKey,
972
+ currentThis: targetObj,
973
+ currentThisPath: drThis,
974
+ parentThisPath: parentThisPath,
975
+ parentThis: parentThis,
976
+ nearThisPath: nearThisPath,
977
+ nearThis: nearThis,
978
+ scripts: EventManager.setBindProperty((_c = config.scripts) !== null && _c !== void 0 ? _c : {}, obj)
979
+ };
980
+ // const attribute = DomUtils.getAttributeToObject(element);
981
+ render.attribute = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });
982
+ render = Object.freeze(render);
983
+ // dr-on-create data onCreateRender
984
+ const onCreateDataScript = `return {rootParent: this, render: this.__render}`;
985
+ const onCreateDataParam = ScriptUtils.eval(onCreateDataScript, Object.assign(obj, { __render: render }));
986
+ if (isOnCreateRenderData(targetObj)) {
987
+ targetObj === null || targetObj === void 0 ? void 0 : targetObj.onCreateRenderData(onCreateDataParam);
988
+ }
989
+ // 부모에게도 자식 this 생성된거 알려주는 callback
990
+ if (onCreateDataParam.render.parentThis && isOnCreatedThisChild(onCreateDataParam.render.parentThis)) {
991
+ onCreateDataParam.render.parentThis.onCreatedThisChild(targetObj, onCreateDataParam);
992
+ }
993
+ // dr-on-create onCreateRender
994
+ const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
995
+ let createParam = [];
996
+ if (onCreate) {
997
+ const script = `${renderScript} return ${onCreate} `;
998
+ createParam = ScriptUtils.eval(script, obj);
999
+ if (!Array.isArray(createParam)) {
1000
+ createParam = [createParam];
1001
+ }
1002
+ }
1003
+ if (isOnCreateRender(targetObj)) {
1004
+ targetObj.onCreateRender(...createParam);
1005
+ }
1006
+ // console.log('매번타나?');
1007
+ // 중요 dr-normal-attr-map
1008
+ // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);
1009
+ const targetAttrObject = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });
1010
+ if (targetAttrObject) {
1011
+ (_d = (_f = rawSet.dataSet).render) !== null && _d !== void 0 ? _d : (_f.render = {});
1012
+ rawSet.dataSet.render.attribute = targetAttrObject;
1013
+ Object.entries(targetAttrObject).forEach(([key, cval], index) => {
1014
+ // console.log('ooooooooooooooooo', key, cval);
1015
+ // const script = `${renderScript} return ${value} `;
1016
+ // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));
1017
+ // // element.setAttribute(key, cval);
1018
+ if (isOnChangeAttrRender(targetObj)) {
1019
+ targetObj.onChangeAttrRender(key, cval, { rawSet: rawSet });
1020
+ }
1021
+ });
1022
+ }
1023
+ // dr-on-component-init
1024
+ // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init
1025
+ const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init
1026
+ // console.log('--------drThisCreate!!!', oninit)
1027
+ if (oninit) {
1028
+ const script = `${renderScript} ${oninit} `;
1029
+ ScriptUtils.eval(script, Object.assign(obj, { __render: render }));
1030
+ }
1031
+ targetElement.querySelectorAll(EventManager.attrNames.map(it => `[${it}]`).join(',')).forEach(it => {
1032
+ it.setAttribute(EventManager.ownerVariablePathAttrName, 'this');
1033
+ });
1034
+ // console.log('targetElement',targetElement);
1035
+ // attribute
1036
+ // const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';
1037
+ const componentNameReplaceKey = RandomUtils.uuid();
1038
+ // if (componentName) {
1039
+ // RawSet.replaceInnerHTML(element, {asIs: `#${componentName}#`, toBe: 'this'})
1040
+ // }
1041
+ // const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';
1042
+ // const innerHTMLNameReplaceKey = RandomUtils.uuid();
1043
+ // if (innerHTMLName) {
1044
+ // RawSet.replaceInnerHTML(element, {asIs: `#${innerHTMLName}#`, toBe: innerHTMLNameReplaceKey})
1045
+ // }
1046
+ // 이걸 왜 뺐었지... 다시넣었음 그런데 조금 로직이.. 검증이..
1047
+ const innerHTMLName = (_e = targetElement.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME)) !== null && _e !== void 0 ? _e : 'innerHTML';
1048
+ if (innerHTMLName) {
1049
+ RawSet.replaceInnerHTML(targetElement, { asIs: `#${innerHTMLName}#`, toBe: element.innerHTML });
1050
+ }
1051
+ // console.log('aa-asIs', targetElement.innerHTML);
1052
+ const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);
1053
+ // console.log('11111111111111', optionThisName)
1054
+ targetElement.getAttributeNames().forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it).replace(/#this#/g, drThis)));
1055
+ const thisRandom = this.drThisEncoding(targetElement, drThis, { asIs: /@this@/g });
1056
+ // console.log('@@@@@@@@@@@@@0', targetElement.innerHTML);
1057
+ // let thisNameRandom: string | undefined = undefined;
1058
+ if (optionThisName) {
1059
+ // console.log('-----0', element.innerHTML, '\n', targetElement.innerHTML)
1060
+ targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);
1061
+ // console.log('-----1', element.innerHTML, '\n', targetElement.innerHTML)
1062
+ // thisNameRandom = this.drThisBindEncoding(targetElement, new RegExp(`@${optionThisName}@`, 'g'), {config: config, otherReplaceVariablePath: drThis});
1063
+ }
1064
+ const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, { config: config, otherReplaceVariablePath: rawSet.findNearThisPath() });
1065
+ const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, { config: config, otherReplaceVariablePath: rawSet.findParentThisPath() });
1066
+ // console.log('@@@@@@@@@@@@@1', targetElement.innerHTML, rawSet.findParentThisPath());
1067
+ // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start, rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement);
1068
+ // if (rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement) {
1069
+ // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start.getAttribute('this-path'));
1070
+ // }
1071
+ // console.log('@@@@@@@@@@@@@2', targetElement.innerHTML);
1072
+ // const nearThisRandom = this.drThisEncoding(targetElement, rawSet.findNearThisPath(), {asIs: /@nearThis@/g});
1073
+ // const parentThisRandom = this.drThisEncoding(targetElement, rawSet.findParentThisPath(), {asIs: /@parentThis@/g});
1074
+ // console.log('aa-toBe', targetElement.innerHTML);
1075
+ // console.log('------', rawSet.findNearThisPath());
1076
+ // console.log('------', rawSet.findParentThisPath());
1077
+ const vars = this.drVarEncoding(targetElement, drVarOption);
1078
+ this.drVarDecoding(targetElement, vars);
1079
+ this.drThisDecoding(targetElement, { asIs: thisRandom, toBe: '@this@' });
1080
+ // if (optionThisName && thisNameRandom)
1081
+ // this.drThisBindDecoding(targetElement, {config: config, asIs: thisNameRandom, toBe: `@${optionThisName}@`});
1082
+ this.drThisBindDecoding(targetElement, { config: config, asIs: nearThisRandom, toBe: '@nearThis@' });
1083
+ this.drThisBindDecoding(targetElement, { config: config, asIs: parentThisRandom, toBe: '@parentThis@' });
1084
+ // if (componentName) {
1085
+ // RawSet.replaceInnerHTML(element, {asIs: componentNameReplaceKey, toBe: `#${componentName}#`})
1086
+ // }
1087
+ // if (innerHTMLName) {
1088
+ // RawSet.replaceInnerHTML(targetElement, {asIs: innerHTMLNameReplaceKey, toBe: `#${innerHTMLName}#`})
1089
+ // }
1090
+ // console.log('ddddddddddddd', targetElement.innerHTML);
1091
+ if (drStripOption && (drStripOption === true || drStripOption === 'true')) {
1092
+ // console.log('------childNodes', Array.from(n.childNodes))
1093
+ Array.from(targetElement.childNodes).forEach(it => fag.append(it));
1094
+ }
1095
+ else {
1096
+ targetElement.classList.add(`${rawSet.uuid}`);
1097
+ fag.append(targetElement);
1098
+ }
1099
+ // (fag as any).__domrender_this_variable_name = drThis;
1100
+ // console.log('set __domrender_this_variable_name', (fag as any).__domrender_this_variable_name)
1101
+ return fag;
1102
+ });
1103
+ }
1104
+ static fetchTemplateStyle(set) {
1105
+ return __awaiter(this, void 0, void 0, function* () {
1106
+ var _a;
1107
+ // const id = RandomUtils.getRandomString(20);
1108
+ const stylePromises = [];
1109
+ const templatePromise = (set.template && set.template.startsWith('lazy://') ? (yield fetch(set.template.substring(6))).text() : Promise.resolve(set.template));
1110
+ if (Array.isArray(set.styles)) {
1111
+ for (let i = 0; set.styles && i < ((_a = set.styles.length) !== null && _a !== void 0 ? _a : 0); i++) {
1112
+ const it = set.styles[i];
1113
+ stylePromises.push(it.startsWith('lazy://') ? (yield fetch(it.substring(6))).text() : Promise.resolve(it));
1114
+ }
1115
+ }
1116
+ else if (set.styles) {
1117
+ stylePromises.push(Promise.resolve(set.styles));
1118
+ }
1119
+ // const tempTemplate = config.window.document.createElement('template');
1120
+ // tempTemplate.innerHTML = await templatePromise;
1121
+ // const tempContainer = config.window.document.createElement('div');
1122
+ return {
1123
+ template: yield templatePromise,
1124
+ styles: yield Promise.all(stylePromises)
1125
+ };
1126
+ });
1127
+ }
1128
+ static createComponentTargetAttribute(name, getThisObj, factory) {
1129
+ const targetAttribute = {
1130
+ name,
1131
+ callBack(element, attrValue, obj, rawSet) {
1132
+ const thisObj = getThisObj(element, attrValue, obj, rawSet);
1133
+ const data = factory(element, attrValue, obj, rawSet);
1134
+ // rawSet.point.thisVariableName = (data as any).__domrender_this_variable_name;
1135
+ if (thisObj) {
1136
+ // const i = thisObj.__domrender_component_new = (thisObj.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;
1137
+ // i.thisVariableName = rawSet.point.thisVariableName;
1138
+ // i.rawSet = rawSet;
1139
+ // i.innerHTML = element.innerHTML;
1140
+ // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());
1141
+ // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());
1142
+ }
1143
+ return data;
1144
+ }
1145
+ };
1146
+ return targetAttribute;
1147
+ }
1148
+ static createComponentTargetElement({ name, objFactory, template = '', styles = [], noStrip }) {
1149
+ const targetElement = {
1150
+ name,
1151
+ styles,
1152
+ template,
1153
+ noStrip,
1154
+ callBack(element, obj, rawSet, attrs, config) {
1155
+ return __awaiter(this, void 0, void 0, function* () {
1156
+ var _a, _b, _c, _d, _e, _f;
1157
+ const templateStyle = yield RawSet.fetchTemplateStyle({ template: this.template, styles: this.styles });
1158
+ this.template = templateStyle.template;
1159
+ this.styles = templateStyle.styles;
1160
+ (_a = obj.__domrender_components) !== null && _a !== void 0 ? _a : (obj.__domrender_components = {});
1161
+ const domrenderComponents = obj.__domrender_components;
1162
+ // debugger;
1163
+ const renderScript = ` /*createComponentTargetElement*/
1164
+ // console.log('-------------------',this.__render);
1165
+ var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;
1166
+ var ${EventManager.COMPONENT_VARNAME} = this.__render.component;
1167
+ var ${EventManager.ELEMENT_VARNAME} = this.__render.element;
1168
+ var ${EventManager.ROUTER_VARNAME} = this.__render.router;
1169
+ var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML;
1170
+ var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;
1171
+ var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath;
1172
+ var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;
1173
+ var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath;
1174
+ var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;
1175
+ var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;
1176
+ `;
1177
+ const parentThisPath = rawSet.findParentThisPath();
1178
+ const parentThis = rawSet.findParentThis(obj);
1179
+ const nearThisPath = rawSet.findNearThisPath();
1180
+ const nearThis = rawSet.findNearThis(obj);
1181
+ let render = {
1182
+ renderScript,
1183
+ element: element,
1184
+ innerHTML: element.innerHTML,
1185
+ // attribute: attribute,
1186
+ getElement: () => config.window.document.querySelector(`[class*="${rawSet.uuid}"]`),
1187
+ rawSet: rawSet,
1188
+ router: config.router,
1189
+ componentKey: rawSet.uuid,
1190
+ nearThisPath: nearThisPath,
1191
+ nearThis: nearThis,
1192
+ parentThisPath: parentThisPath,
1193
+ parentThis: parentThis,
1194
+ scripts: EventManager.setBindProperty((_b = config.scripts) !== null && _b !== void 0 ? _b : {}, obj)
1195
+ };
1196
+ const constructor = element.getAttribute(RawSet.DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME);
1197
+ let constructorParam = [];
1198
+ // script 부분은 처리되어 바인딩 시켜준다
1199
+ render.attribute = RawSet.getAttributeObject(element, { script: renderScript, obj: obj, renderData: render });
1200
+ render = Object.freeze(render);
1201
+ //
1202
+ // // dr-constructor
1203
+ if (constructor) {
1204
+ let param = (_c = ScriptUtils.evalReturn({ bodyScript: renderScript, returnScript: constructor }, Object.assign(obj, { __render: render }))) !== null && _c !== void 0 ? _c : [];
1205
+ if (!Array.isArray(param)) {
1206
+ param = [param];
1207
+ }
1208
+ constructorParam = param;
1209
+ }
1210
+ // // console.log('------22', attrs);
1211
+ const instance = domrenderComponents[rawSet.uuid] = objFactory(element, obj, rawSet, constructorParam);
1212
+ render = Object.assign({ currentThis: instance }, render);
1213
+ rawSet.dataSet.render = render;
1214
+ // 추적 및 destroy 위해.
1215
+ instance.__rawSet = rawSet;
1216
+ //
1217
+ // const i = instance.__domrender_component_new = (instance.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;
1218
+ // i.thisVariableName = rawSet.point.thisVariableName;
1219
+ // i.thisFullVariableName = `this.__domrender_components.${componentKey}`;
1220
+ // i.componentKey = componentKey;
1221
+ // i.rawSet = rawSet;
1222
+ // i.attribute = attribute;
1223
+ // i.router = config.router;
1224
+ // i.scripts = render.scripts;
1225
+ // i.drAttrs = attrs;
1226
+ // i.innerHTML = element.innerHTML;
1227
+ // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());
1228
+ // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());
1229
+ // this.__creatorMetaData = i;
1230
+ // render = {
1231
+ // component: instance,
1232
+ // creatorMetaData: i,
1233
+ // ...render
1234
+ // };
1235
+ //
1236
+ // // 중요 dr-normal-attr-map
1237
+ // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);
1238
+ // if (isOnChangeAttrRender(instance) && normalAttrMap) {
1239
+ // new Map<string, string>(JSON.parse(normalAttrMap)).forEach((value, key) => {
1240
+ // const script = `${renderScript} return ${value} `;
1241
+ // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));
1242
+ // // element.setAttribute(key, cval);
1243
+ // instance.onChangeAttrRender(key, cval);
1244
+ // });
1245
+ // }
1246
+ //
1247
+ // // dr-on-create data
1248
+ // const onCreateDataScript = `return {rootParent: this, render: this.__render}`;
1249
+ // const onCreateDataParam = ScriptUtils.eval(onCreateDataScript, Object.assign(obj, { __render: render }));
1250
+ // if (isOnCreateRenderData(instance)) {
1251
+ // instance?.onCreateRenderData(onCreateDataParam);
1252
+ // }
1253
+ //
1254
+ // // dr-on-create onCreateRender
1255
+ // const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
1256
+ // this.__render = render;
1257
+ // let createParam = [];
1258
+ // if (onCreate) {
1259
+ // const script = `${renderScript} return ${onCreate} `;
1260
+ // createParam = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));
1261
+ // if (!Array.isArray(createParam)) {
1262
+ // createParam = [createParam];
1263
+ // }
1264
+ // }
1265
+ // if (isOnCreateRender(instance)) {
1266
+ // instance?.onCreateRender?.(...createParam);
1267
+ // }
1268
+ let applayTemplate = element.innerHTML;
1269
+ let innerHTMLThisRandom;
1270
+ const componentName = (_d = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME)) !== null && _d !== void 0 ? _d : 'component';
1271
+ const innerHTMLName = (_e = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME)) !== null && _e !== void 0 ? _e : 'innerHTML';
1272
+ if (applayTemplate) {
1273
+ // if (rawSet.point.thisVariableName) {
1274
+ // 넘어온 innerHTML에 this가 있으면 해당안되게 우선 치환.
1275
+ innerHTMLThisRandom = RandomUtils.uuid();
1276
+ applayTemplate = applayTemplate.replace(/this\./g, innerHTMLThisRandom);
1277
+ // }
1278
+ applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');
1279
+ }
1280
+ // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);
1281
+ applayTemplate = ((_f = this.template) !== null && _f !== void 0 ? _f : '').replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);
1282
+ // dr-on-component-init
1283
+ // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init
1284
+ // const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init
1285
+ // if (oninit) {
1286
+ // const script = `${renderScript} ${oninit} `;
1287
+ // ScriptUtils.eval(script, Object.assign(obj, {
1288
+ // __render: render
1289
+ // }));
1290
+ // }
1291
+ const style = RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);
1292
+ element.innerHTML = style + (applayTemplate !== null && applayTemplate !== void 0 ? applayTemplate : '');
1293
+ // 여기서 targetElement의 옷을 벗긴다.
1294
+ // console.log('---createComponentTargetElement', element);
1295
+ let data = yield RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${rawSet.uuid}`, '', !noStrip, obj, config);
1296
+ // const tempDiv = document.createElement("div");
1297
+ // tempDiv.appendChild(data.cloneNode(true)); // 원본 보존
1298
+ // console.log('-------------ddddddddddddd', element.innerHTML, tempDiv.innerHTML);
1299
+ // let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${componentKey}`, '', false, obj, config);
1300
+ // 넘어온 innerHTML에 this가 있는걸 다시 복호화해서 제대로 작동하도록한다. 부모에서의 this면 부모껄로 작동되게
1301
+ if (innerHTMLThisRandom) {
1302
+ const template = config.window.document.createElement('template');
1303
+ template.content.append(data);
1304
+ template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');
1305
+ data = template.content;
1306
+ }
1307
+ // (data as any).render = render;
1308
+ return data;
1309
+ });
1310
+ }
1311
+ // complete
1312
+ };
1313
+ return targetElement;
1314
+ }
1315
+ static isExpression(data) {
1316
+ // const reg = /(?:[$#]\{(?:(([$#]\{)??[^$#]?[^{]*?)\}[$#]))/g;
1317
+ const reg = /[$#]\{([\s\S.]*?)\}[$#]/g;
1318
+ return reg.test(data !== null && data !== void 0 ? data : '');
1319
+ }
1320
+ static expressionGroups(data) {
1321
+ // const reg = /(?:[$#]\{(?:(([$#]\{)??[^$#]*?)\}[$#]))/g;
1322
+ // const reg = /(?:[$#]\{(?:(([$#]\{)??[^$#]?[^{]*?)\}[$#]))/g;
1323
+ const reg = /[$#]\{([\s\S.]*?)\}[$#]/g;
1324
+ return StringUtils.regexExec(reg, data !== null && data !== void 0 ? data : '');
1325
+ }
1326
+ static destroy(obj, parameter, config, destroyOptions = []) {
1327
+ var _a;
1328
+ // console.log('destroy destroydestroydestroydestroy', obj, parameter, config, destroyOptions);
1329
+ if (!destroyOptions.some(it => it === DestroyOptionType.NO_DESTROY)) {
1330
+ if (!destroyOptions.some(it => it === DestroyOptionType.NO_MESSENGER_DESTROY)) {
1331
+ if (config.messenger && obj) {
1332
+ config.messenger.deleteChannelFromObj(obj);
1333
+ }
1334
+ }
1335
+ // console.log('------------destroy', obj);
1336
+ if (isOnDestroyRender(obj)) {
1337
+ (_a = obj.onDestroyRender) === null || _a === void 0 ? void 0 : _a.call(obj, parameter);
1338
+ }
1339
+ }
1340
+ }
1341
+ static getAttributeObject(element, config) {
1342
+ if (!element) {
1343
+ return undefined;
1344
+ }
1345
+ const attribute = DomUtils.getAttributeToObject(element);
1346
+ const normalAttribute = attribute[EventManager.normalAttrMapAttrName];
1347
+ if (normalAttribute) {
1348
+ new Map(JSON.parse(normalAttribute)).forEach((v, k) => {
1349
+ const cval = ScriptUtils.evalReturn({ bodyScript: config.script, returnScript: v }, Object.assign(config.obj, config.renderData ? { __render: config.renderData } : undefined));
1350
+ attribute[k] = cval;
1351
+ });
1352
+ }
1353
+ return attribute;
1354
+ }
1355
+ }
1356
+ RawSet.DR_NAME = 'dr';
1357
+ RawSet.DR_IF_NAME = 'dr-if';
1358
+ RawSet.DR_FOR_NAME = 'dr-for';
1359
+ RawSet.DR_FOR_OF_NAME = 'dr-for-of';
1360
+ RawSet.DR_THIS_PROPERTY_NAME = 'dr-this-property';
1361
+ RawSet.DR_REPEAT_NAME = 'dr-repeat';
1362
+ RawSet.DR_THIS_NAME = 'dr-this';
1363
+ RawSet.DR_FORM_NAME = 'dr-form';
1364
+ RawSet.DR_PRE_NAME = 'dr-pre';
1365
+ RawSet.DR_APPENDER_NAME = 'dr-appender';
1366
+ RawSet.DR_INNERHTML_NAME = 'dr-inner-html';
1367
+ RawSet.DR_INNERTEXT_NAME = 'dr-inner-text';
1368
+ RawSet.DR_DETECT_NAME = 'dr-detect';
1369
+ RawSet.DR_STRIP_NAME = 'dr-strip';
1370
+ RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME = 'dr-replace-target-element-is';
1371
+ // 감지처리되는 옵션
1372
+ RawSet.DR_DETECT_IF_OPTIONNAME = 'dr-detect-option-if';
1373
+ RawSet.DR_DETECT_FILTER_OPTIONNAME = 'dr-detect-option-filter';
1374
+ RawSet.DR_DETECT_ATTR_OPTIONNAME = 'dr-detect-option-attr';
1375
+ /**
1376
+ * @deprecated
1377
+ */
1378
+ RawSet.DR_THIS_OPTIONNAME = 'dr-option-this';
1379
+ RawSet.DR_ATTR_OPTIONNAME = 'dr-option-attr';
1380
+ RawSet.DR_IF_OPTIONNAME = 'dr-option-if';
1381
+ RawSet.DR_IT_OPTIONNAME = 'dr-option-it';
1382
+ RawSet.DR_VAR_OPTIONNAME = 'dr-option-var';
1383
+ RawSet.DR_AFTER_OPTIONNAME = 'dr-option-after';
1384
+ RawSet.DR_NEXT_OPTIONNAME = 'dr-option-next';
1385
+ RawSet.DR_BEFORE_OPTIONNAME = 'dr-option-before';
1386
+ RawSet.DR_COMPLETE_OPTIONNAME = 'dr-option-complete';
1387
+ RawSet.DR_STRIP_OPTIONNAME = 'dr-option-strip';
1388
+ RawSet.DR_DESTROY_OPTIONNAME = 'dr-option-destroy';
1389
+ RawSet.DR_THIS_NAME_OPTIONNAME = 'dr-option-this-name';
1390
+ /**
1391
+ * @deprecated
1392
+ */
1393
+ RawSet.DR_COMPONENT_NAME_OPTIONNAME = 'dr-option-component-name';
1394
+ RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME = 'dr-option-component-inner-html-name';
1395
+ RawSet.DR_KEY_OPTIONNAME = 'dr-option-key';
1396
+ RawSet.DR_HAS_KEYS_OPTIONNAME = 'dr-option-has-keys';
1397
+ RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME = 'dr-on-create:arguments';
1398
+ RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME = 'dr-on-create:callback';
1399
+ /** 우선 쓰는곳이 없어서 deprecated를 걸어놨음
1400
+ @deprecated
1401
+ */
1402
+ RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME = 'dr-on-init:arguments';
1403
+ RawSet.DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME = 'dr-on-constructor:arguments';
1404
+ RawSet.drAttrsOriginName = {
1405
+ dr: RawSet.DR_NAME,
1406
+ drIf: RawSet.DR_IF_NAME,
1407
+ drFor: RawSet.DR_FOR_NAME,
1408
+ drForOf: RawSet.DR_FOR_OF_NAME,
1409
+ drThisProperty: RawSet.DR_THIS_PROPERTY_NAME,
1410
+ drAppender: RawSet.DR_APPENDER_NAME,
1411
+ drRepeat: RawSet.DR_REPEAT_NAME,
1412
+ drThis: RawSet.DR_THIS_NAME,
1413
+ drForm: RawSet.DR_FORM_NAME,
1414
+ drPre: RawSet.DR_PRE_NAME,
1415
+ drInnerHTML: RawSet.DR_INNERHTML_NAME,
1416
+ drInnerText: RawSet.DR_INNERTEXT_NAME,
1417
+ drItOption: RawSet.DR_IT_OPTIONNAME,
1418
+ drVarOption: RawSet.DR_VAR_OPTIONNAME,
1419
+ drAfterOption: RawSet.DR_AFTER_OPTIONNAME,
1420
+ drNextOption: RawSet.DR_NEXT_OPTIONNAME,
1421
+ drBeforeOption: RawSet.DR_BEFORE_OPTIONNAME,
1422
+ drCompleteOption: RawSet.DR_COMPLETE_OPTIONNAME,
1423
+ drStripElement: RawSet.DR_STRIP_NAME,
1424
+ drReplaceTargetElementIs: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME,
1425
+ drStripOption: RawSet.DR_STRIP_OPTIONNAME,
1426
+ drDestroyOption: RawSet.DR_DESTROY_OPTIONNAME,
1427
+ drHasKeysOption: RawSet.DR_HAS_KEYS_OPTIONNAME,
1428
+ drKeyOption: RawSet.DR_KEY_OPTIONNAME
1429
+ };
1430
+ RawSet.DR_TAGS = [];
1431
+ // public static readonly DR_REPLACE_ACTION_ATTRIBUTES = [
1432
+ // RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME
1433
+ // ]
1434
+ RawSet.DR_ATTRIBUTES = [
1435
+ RawSet.DR_NAME,
1436
+ RawSet.DR_APPENDER_NAME,
1437
+ RawSet.DR_IF_NAME,
1438
+ RawSet.DR_FOR_OF_NAME,
1439
+ RawSet.DR_THIS_PROPERTY_NAME,
1440
+ RawSet.DR_FOR_NAME,
1441
+ RawSet.DR_THIS_NAME,
1442
+ RawSet.DR_FORM_NAME,
1443
+ RawSet.DR_PRE_NAME,
1444
+ RawSet.DR_INNERHTML_NAME,
1445
+ RawSet.DR_INNERTEXT_NAME,
1446
+ RawSet.DR_REPEAT_NAME,
1447
+ RawSet.DR_DETECT_NAME,
1448
+ RawSet.DR_STRIP_NAME,
1449
+ ];
1450
+ //# sourceMappingURL=RawSet.js.map