dom-render 1.0.35 → 1.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Config.d.ts CHANGED
@@ -16,6 +16,9 @@ export interface Config {
16
16
  onElementInit?: (name: string, obj: any, rawSet: RawSet) => void;
17
17
  onAttrInit?: (name: string, attrValue: string, obj: any, rawSet: RawSet) => void;
18
18
  proxyExcludeTyps?: ConstructorType<any>[];
19
+ scripts?: {
20
+ [n: string]: any;
21
+ };
19
22
  applyEvents?: {
20
23
  attrName: string;
21
24
  callBack: (elements: Element, attrValue: string, obj: any) => void;
@@ -12,7 +12,8 @@ export declare class DomRenderProxy<T extends object> implements ProxyHandler<T>
12
12
  static isFinal<T = any>(obj: T): boolean;
13
13
  run(objProxy: T): void;
14
14
  initRender(target: Node): void;
15
- render(raws: RawSet[]): void;
15
+ getRawSets(): RawSet[];
16
+ render(raws?: RawSet[]): void;
16
17
  root(paths: string[], value: any): void;
17
18
  set(target: T, p: string | symbol, value: any, receiver: T): boolean;
18
19
  get(target: T, p: string | symbol, receiver: any): any;
package/DomRenderProxy.js CHANGED
@@ -64,14 +64,19 @@ var DomRenderProxy = (function () {
64
64
  });
65
65
  }
66
66
  });
67
+ this.render(this.getRawSets());
68
+ (_b = (_a = this._domRender_proxy) === null || _a === void 0 ? void 0 : _a.onInitRender) === null || _b === void 0 ? void 0 : _b.call(_a);
69
+ };
70
+ DomRenderProxy.prototype.getRawSets = function () {
71
+ var set = new Set();
67
72
  this._rawSets.forEach(function (v, k) {
68
- _this.render(Array.from(v));
73
+ v.forEach(function (it) { return set.add(it); });
69
74
  });
70
- (_b = (_a = this._domRender_proxy) === null || _a === void 0 ? void 0 : _a.onInitRender) === null || _b === void 0 ? void 0 : _b.call(_a);
75
+ return Array.from(set);
71
76
  };
72
77
  DomRenderProxy.prototype.render = function (raws) {
73
78
  var _this = this;
74
- raws.forEach(function (it) {
79
+ (raws !== null && raws !== void 0 ? raws : this.getRawSets()).forEach(function (it) {
75
80
  if (it.point.start.isConnected && it.point.start.isConnected) {
76
81
  var rawSets = it.render(_this._domRender_proxy, _this.config);
77
82
  _this.render(rawSets);
package/RawSet.d.ts CHANGED
@@ -19,6 +19,8 @@ export declare class RawSet {
19
19
  static readonly DR_VAR_OPTIONNAME = "dr-var";
20
20
  static readonly DR_STRIP_OPTIONNAME = "dr-strip";
21
21
  static readonly DR_ATTRIBUTES: string[];
22
+ static readonly SCRIPTS_VARNAME = "$scripts";
23
+ static readonly RAWSET_VARNAME = "$rawset";
22
24
  constructor(uuid: string, point: {
23
25
  start: Comment;
24
26
  end: Comment;
package/RawSet.js CHANGED
@@ -24,13 +24,19 @@ var RawSet = (function () {
24
24
  var usingTriggerVariables = new Set();
25
25
  this.fragment.childNodes.forEach(function (cNode, key) {
26
26
  var _a, _b, _c;
27
+ var script = '';
27
28
  if (cNode.nodeType === Node.TEXT_NODE) {
28
- ScriptUtils_1.ScriptUtils.getVariablePaths("`" + ((_a = cNode.textContent) !== null && _a !== void 0 ? _a : '') + "`").forEach(function (it) { return usingTriggerVariables.add(it); });
29
+ script = "`" + ((_a = cNode.textContent) !== null && _a !== void 0 ? _a : '') + "`";
29
30
  }
30
31
  else if (cNode.nodeType === Node.ELEMENT_NODE) {
31
32
  var element_1 = cNode;
32
33
  var targetAttrNames = ((_c = (_b = config === null || config === void 0 ? void 0 : config.targetAttrs) === null || _b === void 0 ? void 0 : _b.map(function (it) { return it.name; })) !== null && _c !== void 0 ? _c : []).concat(RawSet.DR_ATTRIBUTES);
33
- ScriptUtils_1.ScriptUtils.getVariablePaths(targetAttrNames.map(function (it) { return (element_1.getAttribute(it)); }).filter(function (it) { return it; }).join(';')).forEach(function (it) { return usingTriggerVariables.add(it); });
34
+ script = targetAttrNames.map(function (it) { return (element_1.getAttribute(it)); }).filter(function (it) { return it; }).join(';');
35
+ }
36
+ if (script) {
37
+ script = script.replace(RegExp(RawSet.SCRIPTS_VARNAME.replace('$', '\\$'), 'g'), "this?.___" + RawSet.SCRIPTS_VARNAME);
38
+ script = script.replace(RegExp(RawSet.RAWSET_VARNAME.replace('$', '\\$'), 'g'), "this?.___" + RawSet.RAWSET_VARNAME);
39
+ Array.from(ScriptUtils_1.ScriptUtils.getVariablePaths(script)).filter(function (it) { return !it.startsWith("___" + RawSet.SCRIPTS_VARNAME) && !it.startsWith("___" + RawSet.SCRIPTS_VARNAME); }).forEach(function (it) { return usingTriggerVariables.add(it); });
34
40
  }
35
41
  });
36
42
  return usingTriggerVariables;
@@ -46,7 +52,7 @@ var RawSet = (function () {
46
52
  var fag = document.createDocumentFragment();
47
53
  if (cNode.nodeType === Node.TEXT_NODE) {
48
54
  var textContent = cNode.textContent;
49
- var n = document.createTextNode(ScriptUtils_1.ScriptUtils.eval("return `" + textContent + "`", obj));
55
+ var n = document.createTextNode(ScriptUtils_1.ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n return `" + textContent + "`\n ", (config === null || config === void 0 ? void 0 : config.scripts) ? Object.assign(obj, { __render: Object.freeze({ rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }) : obj));
50
56
  (_a = cNode.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(n, cNode);
51
57
  }
52
58
  else if (cNode.nodeType === Node.ELEMENT_NODE) {
@@ -67,9 +73,7 @@ var RawSet = (function () {
67
73
  var itRandom = RawSet.drItOtherEncoding(element_2);
68
74
  var vars = RawSet.drVarEncoding(element_2, (_b = drAttr.drVarOption) !== null && _b !== void 0 ? _b : '');
69
75
  var newTemp = document.createElement('temp');
70
- ScriptUtils_1.ScriptUtils.eval("\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }", Object.assign({
71
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
72
- }, obj));
76
+ ScriptUtils_1.ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__render.fag.append(n);\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
73
77
  RawSet.drVarDecoding(newTemp, vars);
74
78
  RawSet.drItOtherDecoding(newTemp, itRandom);
75
79
  var tempalte = document.createElement('template');
@@ -83,9 +87,7 @@ var RawSet = (function () {
83
87
  var itRandom = RawSet.drItOtherEncoding(element_2);
84
88
  var vars = RawSet.drVarEncoding(element_2, (_d = drAttr.drVarOption) !== null && _d !== void 0 ? _d : '');
85
89
  var newTemp = document.createElement('temp');
86
- ScriptUtils_1.ScriptUtils.eval("\n if(" + drAttr.drIf + ") {\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n }", Object.assign({
87
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
88
- }, obj));
90
+ ScriptUtils_1.ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n if(" + drAttr.drIf + ") {\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
89
91
  RawSet.drVarDecoding(newTemp, vars);
90
92
  RawSet.drItOtherDecoding(newTemp, itRandom);
91
93
  var tempalte = document.createElement('template');
@@ -137,9 +139,7 @@ var RawSet = (function () {
137
139
  var itRandom = RawSet.drItOtherEncoding(element_2);
138
140
  var vars = RawSet.drVarEncoding(element_2, (_k = drAttr.drVarOption) !== null && _k !== void 0 ? _k : '');
139
141
  var newTemp = document.createElement('temp');
140
- ScriptUtils_1.ScriptUtils.eval("\n for(" + drAttr.drFor + ") {\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n }", Object.assign({
141
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
142
- }, obj));
142
+ ScriptUtils_1.ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n for(" + drAttr.drFor + ") {\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
143
143
  RawSet.drVarDecoding(newTemp, vars);
144
144
  RawSet.drItOtherDecoding(newTemp, itRandom);
145
145
  var tempalte = document.createElement('template');
@@ -153,11 +153,7 @@ var RawSet = (function () {
153
153
  var itRandom = RawSet.drItOtherEncoding(element_2);
154
154
  var vars = RawSet.drVarEncoding(element_2, (_m = drAttr.drVarOption) !== null && _m !== void 0 ? _m : '');
155
155
  var newTemp = document.createElement('temp');
156
- ScriptUtils_1.ScriptUtils.eval("var i = 0; for(const it of " + drAttr.drForOf + ") {\n //alert(1)\n var destIt = it;\n var forOfStr = `" + drAttr.drForOf + "`;\n if (/,/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n \n const n = this.__element.cloneNode(true);\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n \n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n i++;\n }", Object.assign({
157
- __drStripOption: drAttr.drStripOption,
158
- __fag: newTemp,
159
- __element: element_2
160
- }, obj));
156
+ ScriptUtils_1.ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n var i = 0; \n for(const it of " + drAttr.drForOf + ") {\n var destIt = it;\n var forOfStr = `" + drAttr.drForOf + "`;\n if (/,/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n \n const n = this.__render.element.cloneNode(true);\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n \n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n i++;\n }", Object.assign(obj, { __render: Object.freeze({ drStripOption: drAttr.drStripOption, fag: newTemp, element: element_2 }) }));
161
157
  RawSet.drVarDecoding(newTemp, vars);
162
158
  RawSet.drItOtherDecoding(newTemp, itRandom);
163
159
  var tempalte = document.createElement('template');
@@ -246,42 +242,25 @@ var RawSet = (function () {
246
242
  var currentNode;
247
243
  var _loop_1 = function () {
248
244
  if (currentNode.nodeType === Node.TEXT_NODE) {
249
- var text_1 = (_a = currentNode.textContent) !== null && _a !== void 0 ? _a : '';
245
+ var text = (_a = currentNode.textContent) !== null && _a !== void 0 ? _a : '';
250
246
  var template_1 = document.createElement('template');
251
- var a = StringUtils_1.StringUtils.regexExec(/\$\{.*?\}/g, text_1);
252
- var map = a.reverse().map(function (it) { return { uuid: '', content: '', regexArr: it }; });
253
- map.forEach(function (it) {
254
- var uuid = RandomUtils_1.RandomUtils.uuid();
255
- it.uuid = uuid;
256
- it.content = it.regexArr[0];
257
- text_1 = text_1.substr(0, it.regexArr.index) + text_1.substr(it.regexArr.index).replace(it.regexArr[0], "<!--start text " + uuid + "--><!--end text " + uuid + "-->");
258
- });
259
- template_1.innerHTML = text_1;
247
+ var a = StringUtils_1.StringUtils.regexExec(/\$\{.*?\}/g, text);
248
+ var map = a.map(function (it) { return { uuid: RandomUtils_1.RandomUtils.uuid(), content: it[0], regexArr: it }; });
249
+ var lasterIndex_1 = 0;
260
250
  map.forEach(function (it) {
261
- var _a, _b;
262
- var subNodeIterator = document.createNodeIterator(template_1.content, NodeFilter.SHOW_COMMENT, {
263
- acceptNode: function (node) {
264
- var text = node.textContent;
265
- return (text === "start text " + it.uuid || text === "end text " + it.uuid) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
266
- }
267
- });
268
- var start;
269
- var end;
270
- var subNode;
271
- while (subNode = subNodeIterator.nextNode()) {
272
- if (((_a = subNode.textContent) !== null && _a !== void 0 ? _a : '').startsWith('start')) {
273
- start = subNode;
274
- }
275
- if (((_b = subNode.textContent) !== null && _b !== void 0 ? _b : '').startsWith('end')) {
276
- end = subNode;
277
- }
278
- }
279
- if (start && end) {
280
- var fragment = document.createDocumentFragment();
281
- fragment.append(document.createTextNode(it.content));
282
- pars.push(new RawSet(it.uuid, { start: start, end: end }, fragment));
283
- }
251
+ var regexArr = it.regexArr;
252
+ var preparedText = regexArr.input.substring(lasterIndex_1, regexArr.index);
253
+ var start = document.createComment("start text " + it.uuid);
254
+ var end = document.createComment("end text " + it.uuid);
255
+ template_1.content.append(document.createTextNode(preparedText));
256
+ template_1.content.append(start);
257
+ template_1.content.append(end);
258
+ var fragment = document.createDocumentFragment();
259
+ fragment.append(document.createTextNode(it.content));
260
+ pars.push(new RawSet(it.uuid, { start: start, end: end }, fragment));
261
+ lasterIndex_1 = regexArr.index + it.content.length;
284
262
  });
263
+ template_1.content.append(document.createTextNode(text.substring(lasterIndex_1, text.length)));
285
264
  (_b = currentNode === null || currentNode === void 0 ? void 0 : currentNode.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(template_1.content, currentNode);
286
265
  }
287
266
  else {
@@ -401,6 +380,8 @@ var RawSet = (function () {
401
380
  RawSet.DR_VAR_OPTIONNAME = 'dr-var';
402
381
  RawSet.DR_STRIP_OPTIONNAME = 'dr-strip';
403
382
  RawSet.DR_ATTRIBUTES = [RawSet.DR, RawSet.DR_IF_NAME, RawSet.DR_FOR_OF_NAME, RawSet.DR_FOR_NAME, RawSet.DR_THIS_NAME, RawSet.DR_INNERHTML_NAME, RawSet.DR_INNERTEXT_NAME];
383
+ RawSet.SCRIPTS_VARNAME = '$scripts';
384
+ RawSet.RAWSET_VARNAME = '$rawset';
404
385
  return RawSet;
405
386
  }());
406
387
  exports.RawSet = RawSet;
@@ -435,13 +435,19 @@ var RawSet = (function () {
435
435
  var usingTriggerVariables = new Set();
436
436
  this.fragment.childNodes.forEach(function (cNode, key) {
437
437
  var _a, _b, _c;
438
+ var script = '';
438
439
  if (cNode.nodeType === Node.TEXT_NODE) {
439
- ScriptUtils.getVariablePaths("`" + ((_a = cNode.textContent) !== null && _a !== void 0 ? _a : '') + "`").forEach(function (it) { return usingTriggerVariables.add(it); });
440
+ script = "`" + ((_a = cNode.textContent) !== null && _a !== void 0 ? _a : '') + "`";
440
441
  }
441
442
  else if (cNode.nodeType === Node.ELEMENT_NODE) {
442
443
  var element_1 = cNode;
443
444
  var targetAttrNames = ((_c = (_b = config === null || config === void 0 ? void 0 : config.targetAttrs) === null || _b === void 0 ? void 0 : _b.map(function (it) { return it.name; })) !== null && _c !== void 0 ? _c : []).concat(RawSet.DR_ATTRIBUTES);
444
- ScriptUtils.getVariablePaths(targetAttrNames.map(function (it) { return (element_1.getAttribute(it)); }).filter(function (it) { return it; }).join(';')).forEach(function (it) { return usingTriggerVariables.add(it); });
445
+ script = targetAttrNames.map(function (it) { return (element_1.getAttribute(it)); }).filter(function (it) { return it; }).join(';');
446
+ }
447
+ if (script) {
448
+ script = script.replace(RegExp(RawSet.SCRIPTS_VARNAME.replace('$', '\\$'), 'g'), "this?.___" + RawSet.SCRIPTS_VARNAME);
449
+ script = script.replace(RegExp(RawSet.RAWSET_VARNAME.replace('$', '\\$'), 'g'), "this?.___" + RawSet.RAWSET_VARNAME);
450
+ Array.from(ScriptUtils.getVariablePaths(script)).filter(function (it) { return !it.startsWith("___" + RawSet.SCRIPTS_VARNAME) && !it.startsWith("___" + RawSet.SCRIPTS_VARNAME); }).forEach(function (it) { return usingTriggerVariables.add(it); });
445
451
  }
446
452
  });
447
453
  return usingTriggerVariables;
@@ -457,7 +463,7 @@ var RawSet = (function () {
457
463
  var fag = document.createDocumentFragment();
458
464
  if (cNode.nodeType === Node.TEXT_NODE) {
459
465
  var textContent = cNode.textContent;
460
- var n = document.createTextNode(ScriptUtils.eval("return `" + textContent + "`", obj));
466
+ var n = document.createTextNode(ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n return `" + textContent + "`\n ", (config === null || config === void 0 ? void 0 : config.scripts) ? Object.assign(obj, { __render: Object.freeze({ rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }) : obj));
461
467
  (_a = cNode.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(n, cNode);
462
468
  }
463
469
  else if (cNode.nodeType === Node.ELEMENT_NODE) {
@@ -478,9 +484,7 @@ var RawSet = (function () {
478
484
  var itRandom = RawSet.drItOtherEncoding(element_2);
479
485
  var vars = RawSet.drVarEncoding(element_2, (_b = drAttr.drVarOption) !== null && _b !== void 0 ? _b : '');
480
486
  var newTemp = document.createElement('temp');
481
- ScriptUtils.eval("\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }", Object.assign({
482
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
483
- }, obj));
487
+ ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__render.fag.append(n);\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
484
488
  RawSet.drVarDecoding(newTemp, vars);
485
489
  RawSet.drItOtherDecoding(newTemp, itRandom);
486
490
  var tempalte = document.createElement('template');
@@ -494,9 +498,7 @@ var RawSet = (function () {
494
498
  var itRandom = RawSet.drItOtherEncoding(element_2);
495
499
  var vars = RawSet.drVarEncoding(element_2, (_d = drAttr.drVarOption) !== null && _d !== void 0 ? _d : '');
496
500
  var newTemp = document.createElement('temp');
497
- ScriptUtils.eval("\n if(" + drAttr.drIf + ") {\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n }", Object.assign({
498
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
499
- }, obj));
501
+ ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n const " + RawSet.RAWSET_VARNAME + " = this.__render.rawset;\n if(" + drAttr.drIf + ") {\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, rawset: _this, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
500
502
  RawSet.drVarDecoding(newTemp, vars);
501
503
  RawSet.drItOtherDecoding(newTemp, itRandom);
502
504
  var tempalte = document.createElement('template');
@@ -548,9 +550,7 @@ var RawSet = (function () {
548
550
  var itRandom = RawSet.drItOtherEncoding(element_2);
549
551
  var vars = RawSet.drVarEncoding(element_2, (_k = drAttr.drVarOption) !== null && _k !== void 0 ? _k : '');
550
552
  var newTemp = document.createElement('temp');
551
- ScriptUtils.eval("\n for(" + drAttr.drFor + ") {\n const n = this.__element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n }", Object.assign({
552
- __fag: newTemp, __drStripOption: drAttr.drStripOption, __element: element_2
553
- }, obj));
553
+ ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n for(" + drAttr.drFor + ") {\n const n = this.__render.element.cloneNode(true);\n var destIt = " + drAttr.drItOption + ";\n if (destIt !== undefined) {\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n }\n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }", Object.assign(obj, { __render: Object.freeze({ fag: newTemp, drStripOption: drAttr.drStripOption, element: element_2, scripts: config === null || config === void 0 ? void 0 : config.scripts }) }));
554
554
  RawSet.drVarDecoding(newTemp, vars);
555
555
  RawSet.drItOtherDecoding(newTemp, itRandom);
556
556
  var tempalte = document.createElement('template');
@@ -564,11 +564,7 @@ var RawSet = (function () {
564
564
  var itRandom = RawSet.drItOtherEncoding(element_2);
565
565
  var vars = RawSet.drVarEncoding(element_2, (_m = drAttr.drVarOption) !== null && _m !== void 0 ? _m : '');
566
566
  var newTemp = document.createElement('temp');
567
- ScriptUtils.eval("var i = 0; for(const it of " + drAttr.drForOf + ") {\n //alert(1)\n var destIt = it;\n var forOfStr = `" + drAttr.drForOf + "`;\n if (/,/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n \n const n = this.__element.cloneNode(true);\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n \n if (this.__drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__fag.append(n);\n }\n i++;\n }", Object.assign({
568
- __drStripOption: drAttr.drStripOption,
569
- __fag: newTemp,
570
- __element: element_2
571
- }, obj));
567
+ ScriptUtils.eval("\n const " + RawSet.SCRIPTS_VARNAME + " = this.__render.scripts;\n var i = 0; \n for(const it of " + drAttr.drForOf + ") {\n var destIt = it;\n var forOfStr = `" + drAttr.drForOf + "`;\n if (/,/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n \n const n = this.__render.element.cloneNode(true);\n n.innerHTML = n.innerHTML.replace(/\\#it\\#/g, destIt);\n \n if (this.__render.drStripOption) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n i++;\n }", Object.assign(obj, { __render: Object.freeze({ drStripOption: drAttr.drStripOption, fag: newTemp, element: element_2 }) }));
572
568
  RawSet.drVarDecoding(newTemp, vars);
573
569
  RawSet.drItOtherDecoding(newTemp, itRandom);
574
570
  var tempalte = document.createElement('template');
@@ -657,42 +653,25 @@ var RawSet = (function () {
657
653
  var currentNode;
658
654
  var _loop_1 = function () {
659
655
  if (currentNode.nodeType === Node.TEXT_NODE) {
660
- var text_1 = (_a = currentNode.textContent) !== null && _a !== void 0 ? _a : '';
656
+ var text = (_a = currentNode.textContent) !== null && _a !== void 0 ? _a : '';
661
657
  var template_1 = document.createElement('template');
662
- var a = StringUtils.regexExec(/\$\{.*?\}/g, text_1);
663
- var map = a.reverse().map(function (it) { return { uuid: '', content: '', regexArr: it }; });
664
- map.forEach(function (it) {
665
- var uuid = RandomUtils.uuid();
666
- it.uuid = uuid;
667
- it.content = it.regexArr[0];
668
- text_1 = text_1.substr(0, it.regexArr.index) + text_1.substr(it.regexArr.index).replace(it.regexArr[0], "<!--start text " + uuid + "--><!--end text " + uuid + "-->");
669
- });
670
- template_1.innerHTML = text_1;
658
+ var a = StringUtils.regexExec(/\$\{.*?\}/g, text);
659
+ var map = a.map(function (it) { return { uuid: RandomUtils.uuid(), content: it[0], regexArr: it }; });
660
+ var lasterIndex_1 = 0;
671
661
  map.forEach(function (it) {
672
- var _a, _b;
673
- var subNodeIterator = document.createNodeIterator(template_1.content, NodeFilter.SHOW_COMMENT, {
674
- acceptNode: function (node) {
675
- var text = node.textContent;
676
- return (text === "start text " + it.uuid || text === "end text " + it.uuid) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
677
- }
678
- });
679
- var start;
680
- var end;
681
- var subNode;
682
- while (subNode = subNodeIterator.nextNode()) {
683
- if (((_a = subNode.textContent) !== null && _a !== void 0 ? _a : '').startsWith('start')) {
684
- start = subNode;
685
- }
686
- if (((_b = subNode.textContent) !== null && _b !== void 0 ? _b : '').startsWith('end')) {
687
- end = subNode;
688
- }
689
- }
690
- if (start && end) {
691
- var fragment = document.createDocumentFragment();
692
- fragment.append(document.createTextNode(it.content));
693
- pars.push(new RawSet(it.uuid, { start: start, end: end }, fragment));
694
- }
662
+ var regexArr = it.regexArr;
663
+ var preparedText = regexArr.input.substring(lasterIndex_1, regexArr.index);
664
+ var start = document.createComment("start text " + it.uuid);
665
+ var end = document.createComment("end text " + it.uuid);
666
+ template_1.content.append(document.createTextNode(preparedText));
667
+ template_1.content.append(start);
668
+ template_1.content.append(end);
669
+ var fragment = document.createDocumentFragment();
670
+ fragment.append(document.createTextNode(it.content));
671
+ pars.push(new RawSet(it.uuid, { start: start, end: end }, fragment));
672
+ lasterIndex_1 = regexArr.index + it.content.length;
695
673
  });
674
+ template_1.content.append(document.createTextNode(text.substring(lasterIndex_1, text.length)));
696
675
  (_b = currentNode === null || currentNode === void 0 ? void 0 : currentNode.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(template_1.content, currentNode);
697
676
  }
698
677
  else {
@@ -812,6 +791,8 @@ var RawSet = (function () {
812
791
  RawSet.DR_VAR_OPTIONNAME = 'dr-var';
813
792
  RawSet.DR_STRIP_OPTIONNAME = 'dr-strip';
814
793
  RawSet.DR_ATTRIBUTES = [RawSet.DR, RawSet.DR_IF_NAME, RawSet.DR_FOR_OF_NAME, RawSet.DR_FOR_NAME, RawSet.DR_THIS_NAME, RawSet.DR_INNERHTML_NAME, RawSet.DR_INNERTEXT_NAME];
794
+ RawSet.SCRIPTS_VARNAME = '$scripts';
795
+ RawSet.RAWSET_VARNAME = '$rawset';
815
796
  return RawSet;
816
797
  }());
817
798
 
@@ -880,14 +861,19 @@ var DomRenderProxy = (function () {
880
861
  });
881
862
  }
882
863
  });
864
+ this.render(this.getRawSets());
865
+ (_b = (_a = this._domRender_proxy) === null || _a === void 0 ? void 0 : _a.onInitRender) === null || _b === void 0 ? void 0 : _b.call(_a);
866
+ };
867
+ DomRenderProxy.prototype.getRawSets = function () {
868
+ var set = new Set();
883
869
  this._rawSets.forEach(function (v, k) {
884
- _this.render(Array.from(v));
870
+ v.forEach(function (it) { return set.add(it); });
885
871
  });
886
- (_b = (_a = this._domRender_proxy) === null || _a === void 0 ? void 0 : _a.onInitRender) === null || _b === void 0 ? void 0 : _b.call(_a);
872
+ return Array.from(set);
887
873
  };
888
874
  DomRenderProxy.prototype.render = function (raws) {
889
875
  var _this = this;
890
- raws.forEach(function (it) {
876
+ (raws !== null && raws !== void 0 ? raws : this.getRawSets()).forEach(function (it) {
891
877
  if (it.point.start.isConnected && it.point.start.isConnected) {
892
878
  var rawSets = it.render(_this._domRender_proxy, _this.config);
893
879
  _this.render(rawSets);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dom-render",
3
- "version": "1.0.35",
3
+ "version": "1.0.36",
4
4
  "main": "DomRender.js",
5
5
  "license": "MIT",
6
6
  "description": "dom-render",