@reidelsaltres/pureper 0.1.181 → 0.1.183
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/out/foundation/engine/TemplateEngine.d.ts +1 -0
- package/out/foundation/engine/TemplateEngine.d.ts.map +1 -1
- package/out/foundation/engine/TemplateEngine.js +27 -4
- package/out/foundation/engine/TemplateEngine.js.map +1 -1
- package/out/index.d.ts +0 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +0 -1
- package/out/index.js.map +1 -1
- package/package.json +1 -1
- package/src/foundation/engine/TemplateEngine.ts +25 -5
- package/src/index.ts +0 -1
- package/src/foundation/HMLELoader.ts +0 -18
- package/src/foundation/HMLEParser.ts +0 -561
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,OAAO,OAAO,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CA0BtB;IACR,OAAO,CAAC,QAAQ,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,30 @@ export default class TemplateEngine {
|
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
}(this);
|
|
32
|
+
set_component = new class {
|
|
33
|
+
engine;
|
|
34
|
+
constructor(engine) {
|
|
35
|
+
this.engine = engine;
|
|
36
|
+
}
|
|
37
|
+
acceptNode(node) {
|
|
38
|
+
return Array.from(node.attributes).some(attr => /^set\[[^\]]+\]$/i.test(attr.name));
|
|
39
|
+
}
|
|
40
|
+
walkthrough(walker, node, data) {
|
|
41
|
+
const element = node;
|
|
42
|
+
const bool = this.acceptNode(element);
|
|
43
|
+
if (bool) {
|
|
44
|
+
const setAttribute = Array.from(element.attributes)
|
|
45
|
+
.find(attr => /^set\[[^\]]+\]$/i.test(attr.name));
|
|
46
|
+
const attributeName = setAttribute.name.substring(4, setAttribute.name.length - 1);
|
|
47
|
+
const valueExpression = new Expression(setAttribute.value);
|
|
48
|
+
element.setAttribute(attributeName, valueExpression.eval(data));
|
|
49
|
+
this.engine.bindings.set(element, () => {
|
|
50
|
+
element.removeAttribute(attributeName);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}(this);
|
|
32
56
|
on_component = new class {
|
|
33
57
|
engine;
|
|
34
58
|
constructor(engine) {
|
|
@@ -55,8 +79,6 @@ export default class TemplateEngine {
|
|
|
55
79
|
}
|
|
56
80
|
return false;
|
|
57
81
|
}
|
|
58
|
-
doWork(context) {
|
|
59
|
-
}
|
|
60
82
|
}(this);
|
|
61
83
|
injection_component = new class {
|
|
62
84
|
engine;
|
|
@@ -259,8 +281,9 @@ export default class TemplateEngine {
|
|
|
259
281
|
}
|
|
260
282
|
}(this);
|
|
261
283
|
components = [
|
|
262
|
-
this.ref_component, this.on_component, this.
|
|
263
|
-
this.
|
|
284
|
+
this.ref_component, this.on_component, this.set_component,
|
|
285
|
+
this.injection_component, this.exp_component, this.for_component,
|
|
286
|
+
this.if_component
|
|
264
287
|
];
|
|
265
288
|
bindings = new Map();
|
|
266
289
|
onChangeCallbacks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAC5C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,cAAc;IACd,aAAa,GAAsB,IAAI;QAEzB;QADpB,WAAW,CAAS;QAC3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;gBAC5C,MAAM,OAAO,GAAW,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;QACM,MAAM,CAAC,OAA6D;YACvE,OAAQ,CAAC,IAAK,CAAC,GAAG,CAAC,OAAQ,CAAC,OAAO,EAAE,OAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,WAAY,CAAC,GAAG,CAAC,OAAQ,CAAC,OAAO,EAAE,OAAQ,CAAC,OAAO,CAAC,CAAC;YAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC5C,OAAQ,CAAC,IAAK,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,CAAC,WAAY,CAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,aAAa,GAAsB,IAAI;QACzB;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;qBAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtD,MAAM,aAAa,GAAG,YAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACrF,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,YAAa,CAAC,KAAK,CAAC,CAAC;gBAE5D,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;oBACnC,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,YAAY,GAAsB,IAAI;QACxB;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;qBAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,WAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;oBAC9B,OAAO,CAAC,IAAI,CAAC,IAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnC,CAAC,CAAC;gBAEF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;oBACnC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,mBAAmB,GAAsB,IAAI;QAC/B;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC;QACxC,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,IAAI,EAAE,CAAC;gBACP,SAAS,UAAU;oBACf,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC;oBAClD,MAAM,UAAU,GAAW,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;oBACjE,MAAM,EAAE,GAAW,OAAO,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC;oBAE/C,OAAO,CAAC,MAAM,EAAE,CAAC;oBAEjB,MAAM,aAAa,GAAG,IAAK,CAAC,GAAG,CAAC,UAAU,CAAY,CAAC;oBACvD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACjB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,UAAU,cAAc,CAAC,CAAC;wBAC5E,OAAO,IAAI,CAAC;oBAChB,CAAC;oBAAA,CAAC;oBACF,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,EAAqB,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACM,MAAM,CAAC,OAAoE;YAC9E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAQ,CAAC;YACzC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,aAAa,GAAsB,IAAI;QACzB;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC;QAClC,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC;gBACxC,MAAM,EAAE,GAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;gBAEzD,MAAM,KAAK,GAAG,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,IAAI,EAAE,YAAY,UAAU,EAAE,CAAC;oBAC3B,EAAE,CAAC,SAAS,CAAC,CAAC,QAAe,EAAE,EAAE;wBAC7B,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;wBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBACrB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEhC;sEACsD;YAC1D,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACM,MAAM,CAAC,OAA0C;YACpD,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,aAAa,GAAsB,IAAI;QACzB;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,OAAgB;YAC9B,OAAO,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;QACrC,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,MAAM,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAE5D,MAAM,KAAK,GAAW,OAAO,CAAC,YAAY,CAAC,OAAO,CAAE,CAAC;gBACrD,MAAM,KAAK,GAAW,OAAO,CAAC,YAAY,CAAC,OAAO,CAAE,CAAC;gBACrD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAE,CAAC;gBACxC,MAAM,EAAE,GAAiB,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;gBAEzD,MAAM,QAAQ,GAAG,EAAE,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,IAAI,EAAE,YAAY,UAAU,EAAE,CAAC;oBAC3B,EAAE,CAAC,SAAS,CAAC,CAAC,QAAe,EAAE,EAAE;wBAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;wBACrB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrF,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACM,MAAM,CAAC,OAIb;YACG,MAAM,MAAM,GAAG,EAAE,CAAC;YAElB,MAAM,OAAO,GAAG,OAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,QAAQ,GAAG,OAAQ,CAAC,QAAQ,CAAC;YACnC,MAAM,KAAK,GAAG,OAAQ,CAAC,KAAK,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAQ,CAAC,KAAK,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAQ,CAAC,IAAI,CAAC;YAE3B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEvC,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,QAAgB,CAAC,CAAC,CAAC,CAAC;gBAE3E,IAAI,KAAK;oBAAE,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAEnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAC5D,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAElD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAEhC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACf,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QAEP,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,YAAY,GAAsB,IAAI;QACxB;QAA3B,YAA2B,MAAsB;YAAtB,WAAM,GAAN,MAAM,CAAgB;QAAI,CAAC;QAC/C,UAAU,CAAC,IAAa;YAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI;mBACrB,IAAI,CAAC,OAAO,KAAK,QAAQ;mBACzB,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC;QACnC,CAAC;QACM,WAAW,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY;YAC9D,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,QAAQ,GAAwD,EAAE,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAEjF,IAAI,KAAK,GAAS,OAAO,CAAC;gBAC1B,OAAO,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,KAAK,CAAC,WAAW;wBAAE,MAAM;oBAC9B,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC7D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAgB,CAAC;wBAAE,MAAM;oBACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAgB,EAAE,MAAM,EAAE,cAAc,CAAC,oBAAoB,CAAC,KAAgB,CAAC,EAAE,CAAC,CAAC;gBAChH,CAAC;gBAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;oBAC5D,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAC5B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;oBAE3D,IAAI,SAAS,YAAY,UAAU,EAAE,CAAC;wBAClC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAiB,EAAE,EAAE;4BACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;4BACrB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;wBACtD,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEtD,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QACM,MAAM,CAAC,OAIb;YACG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAQ,CAAC;YAE5C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtC;kDACkC;YACtC,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC5D,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;oBAC3D,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEvD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEzC,MAAM;gBACV,CAAC;gBAAA,CAAC;gBAEF,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;gBAC3D,MAAM,cAAc,GAAG,SAAS,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAE3F,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;oBAC3D,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEvD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;oBAEzC,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;KACJ,CAAC,IAAI,CAAC,CAAC;IACS,UAAU,GAAwB;QAC/C,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa;QACzD,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa;QAChE,IAAI,CAAC,YAAY;KACpB,CAAC;IACc,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,iBAAiB,GAAmB,EAAE,CAAC;IACjD,WAAW,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,WAAW,CAAC,IAAU,EAAE,KAAY;QAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,MAAc,EAAE,KAAY;QACnD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IACO,MAAM;QACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ,CAAC,KAAiB;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACM,WAAW,CAAC,IAAU,EAAE,KAAY;QACvC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAqB,CAAC,WAAW,GAAG,KAAK,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAQ,IAAI,EAAE;YACnC,UAAU,EAAE,UAAU,CAAC,sBAAsB,GAAG,UAAU,CAAC,YAAY;YACvE,cAAc,EAAE,CAAC,MAAqB,EAAE,IAAU,EAAE,IAAY,EAAE,EAAE;gBAChE,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU;oBACnC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;wBAAE,OAAO;gBAE3E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,MAAM,CAAC,WAAW,CAAC,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClJ,CAAC,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE;YAC5C,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrJ,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACM,WAAW,CAAC,IAAU;QACzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAQ,IAAI,EAAE;YACnC,UAAU,EAAE,UAAU,CAAC,sBAAsB,GAAG,UAAU,CAAC,YAAY;SAC1E,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,WAAW,CAAC,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAC;YAEvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClG,CAAC,EAAE,CAAC;QACR,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAe,CAAC;YAChC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;YAEvB,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACO,MAAM,CAAC,oBAAoB,CAAC,IAAa;QAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AACD,MAAM,OAAO,cAAc;IACP,MAAM,CAAiB;IAChC,gBAAgB,CAAiC;IAExD,YAAmB,MAAsB,EAAE,gBAAkC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,OAAuC;QACjD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;IACpC,CAAC;CACJ;AACD,MAAM,OAAO,MAAM;IACP,oBAAoB,GAAuC,EAAE,CAAC;IAC9D,oBAAoB,GAAuC,EAAE,CAAC;IAE9D,IAAI,CAAQ;IACb,MAAM,CAA0B;IAC/B,cAAc,CAAqD;IACnE,UAAU,CAAS;IAE3B,YAAmB,IAAU,EAAE,QAI9B;QAEG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,QAAQ,EAAE,cAAc,CAAC;IACnD,CAAC;IAEM,IAAI,CAAC,IAAW,EAAE,IAAQ,EAAE,cAAkE;QACjG,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,IAAK,CAAC;QAC7B,IAAI,CAAC,cAAc;YAAE,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO;QAErD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,IAAI,cAAc,EAAE,CAAC;YACjB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,aAAa;oBAAE,OAAO;gBAC3E,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IACO,WAAW,CAAC,IAAU,EAAE,IAAY;QACxC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAEM,WAAW,CAAC,QAAwC;QACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACM,WAAW,CAAC,QAAwC;QACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACJ"}
|
package/out/index.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ export { default as Attribute } from './foundation/component_api/Attribute.js';
|
|
|
9
9
|
export { default as Triplet, TripletStruct, AccessType } from './foundation/Triplet.js';
|
|
10
10
|
export { ReComponent, RePage } from './foundation/TripletDecorator.js';
|
|
11
11
|
export { default as Fetcher } from './foundation/Fetcher.js';
|
|
12
|
-
export { default as HMLEParser } from './foundation/HMLEParser.js';
|
|
13
12
|
export * from './foundation/engine/TemplateEngine.js';
|
|
14
13
|
export { Router } from './foundation/worker/Router.js';
|
|
15
14
|
export { default as ServiceWorker } from './foundation/worker/ServiceWorker.js';
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
|
package/out/index.js
CHANGED
|
@@ -7,7 +7,6 @@ export { default as Attribute } from './foundation/component_api/Attribute.js';
|
|
|
7
7
|
export { default as Triplet, AccessType } from './foundation/Triplet.js';
|
|
8
8
|
export { ReComponent, RePage } from './foundation/TripletDecorator.js';
|
|
9
9
|
export { default as Fetcher } from './foundation/Fetcher.js';
|
|
10
|
-
export { default as HMLEParser } from './foundation/HMLEParser.js';
|
|
11
10
|
export * from './foundation/engine/TemplateEngine.js';
|
|
12
11
|
export { Router } from './foundation/worker/Router.js';
|
|
13
12
|
export { default as ServiceWorker } from './foundation/worker/ServiceWorker.js';
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAiB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAiB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7D,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAGtC,qEAAqE;AACrE;;WAEQ;AAER,yEAAyE"}
|
package/package.json
CHANGED
|
@@ -30,6 +30,28 @@ export default class TemplateEngine {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
}(this);
|
|
33
|
+
private readonly set_component: TemplateComponent = new class implements TemplateComponent {
|
|
34
|
+
public constructor(private engine: TemplateEngine) { }
|
|
35
|
+
public acceptNode(node: Element): boolean {
|
|
36
|
+
return Array.from(node.attributes).some(attr => /^set\[[^\]]+\]$/i.test(attr.name));
|
|
37
|
+
}
|
|
38
|
+
public walkthrough(walker: Walker<Scope>, node: Node, data?: Scope): boolean {
|
|
39
|
+
const element = node as Element;
|
|
40
|
+
const bool = this.acceptNode(element);
|
|
41
|
+
if (bool) {
|
|
42
|
+
const setAttribute = Array.from(element.attributes)
|
|
43
|
+
.find(attr => /^set\[[^\]]+\]$/i.test(attr.name));
|
|
44
|
+
const attributeName = setAttribute!.name.substring(4, setAttribute!.name.length - 1);
|
|
45
|
+
const valueExpression = new Expression(setAttribute!.value);
|
|
46
|
+
|
|
47
|
+
element.setAttribute(attributeName, valueExpression.eval(data!));
|
|
48
|
+
this.engine.bindings.set(element, () => {
|
|
49
|
+
element.removeAttribute(attributeName);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}(this);
|
|
33
55
|
private readonly on_component: TemplateComponent = new class implements TemplateComponent {
|
|
34
56
|
public constructor(private engine: TemplateEngine) { }
|
|
35
57
|
public acceptNode(node: Element): boolean {
|
|
@@ -54,9 +76,6 @@ export default class TemplateEngine {
|
|
|
54
76
|
}
|
|
55
77
|
return false;
|
|
56
78
|
}
|
|
57
|
-
public doWork(context?: { element: Element, refName: string, data?: Scope }): void {
|
|
58
|
-
|
|
59
|
-
}
|
|
60
79
|
}(this);
|
|
61
80
|
private readonly injection_component: TemplateComponent = new class implements TemplateComponent {
|
|
62
81
|
public constructor(private engine: TemplateEngine) { }
|
|
@@ -277,8 +296,9 @@ export default class TemplateEngine {
|
|
|
277
296
|
}
|
|
278
297
|
}(this);
|
|
279
298
|
private readonly components: TemplateComponent[] = [
|
|
280
|
-
this.ref_component, this.on_component, this.
|
|
281
|
-
this.exp_component, this.for_component,
|
|
299
|
+
this.ref_component, this.on_component, this.set_component,
|
|
300
|
+
this.injection_component, this.exp_component, this.for_component,
|
|
301
|
+
this.if_component
|
|
282
302
|
];
|
|
283
303
|
public readonly bindings: Map<Element, () => void> = new Map();
|
|
284
304
|
private readonly onChangeCallbacks: (() => void)[] = [];
|
package/src/index.ts
CHANGED
|
@@ -14,7 +14,6 @@ export { default as Triplet, TripletStruct, AccessType } from './foundation/Trip
|
|
|
14
14
|
export { ReComponent, RePage } from './foundation/TripletDecorator.js';
|
|
15
15
|
|
|
16
16
|
export { default as Fetcher } from './foundation/Fetcher.js';
|
|
17
|
-
export { default as HMLEParser } from './foundation/HMLEParser.js';
|
|
18
17
|
|
|
19
18
|
export * from './foundation/engine/TemplateEngine.js';
|
|
20
19
|
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
interface AttributeRule {
|
|
2
|
-
pattern: RegExp;
|
|
3
|
-
}
|
|
4
|
-
class Scope {
|
|
5
|
-
}
|
|
6
|
-
export default class HMLELoader {
|
|
7
|
-
public providedScope?: Scope | {};
|
|
8
|
-
|
|
9
|
-
public HMLELoader(scope: Scope | {}) {
|
|
10
|
-
this.providedScope = scope;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public async loadFromString(hmle: string): Promise<DocumentFragment> {
|
|
14
|
-
const template = document.createElement('template');
|
|
15
|
-
template.innerHTML = hmle;
|
|
16
|
-
return template.content;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,561 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HMLEParser - HTML Markup Language Extensions Parser
|
|
3
|
-
*
|
|
4
|
-
* Two-stage parsing:
|
|
5
|
-
* Stage 1: String processing - @for loops, @(expression) interpolations
|
|
6
|
-
* Stage 2: DOM processing - @[event](handler) bindings, attribute directives
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* const parser = new HMLEParser();
|
|
10
|
-
* parser.addVariable('items', [{name: 'Item 1'}, {name: 'Item 2'}]);
|
|
11
|
-
* const fragment = parser.parseToDOM(templateString, scopeObject);
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
// Stage 1: String-based rules
|
|
15
|
-
class HMLEParserRule {
|
|
16
|
-
public pattern: RegExp;
|
|
17
|
-
public replacer: (parser: HMLEParser, match: RegExpExecArray, input: string, scope?: Record<string, any>) => string | { text: string; end: number };
|
|
18
|
-
|
|
19
|
-
constructor(
|
|
20
|
-
pattern: RegExp,
|
|
21
|
-
replacer: (parser: HMLEParser, match: RegExpExecArray, input: string, scope?: Record<string, any>) => string | { text: string; end: number }
|
|
22
|
-
) {
|
|
23
|
-
this.pattern = pattern;
|
|
24
|
-
this.replacer = replacer;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Stage 2: DOM-based rules for attribute processing
|
|
29
|
-
class HMLEDOMRule {
|
|
30
|
-
public attrPattern: RegExp;
|
|
31
|
-
public processor: (parser: HMLEParser, element: Element, attrName: string, attrValue: string, match: RegExpExecArray, scope?: Record<string, any>) => void;
|
|
32
|
-
|
|
33
|
-
constructor(
|
|
34
|
-
attrPattern: RegExp,
|
|
35
|
-
processor: (parser: HMLEParser, element: Element, attrName: string, attrValue: string, match: RegExpExecArray, scope?: Record<string, any>) => void
|
|
36
|
-
) {
|
|
37
|
-
this.attrPattern = attrPattern;
|
|
38
|
-
this.processor = processor;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export default class HMLEParser {
|
|
43
|
-
// Extract balanced braces { ... }
|
|
44
|
-
private static extractBalancedBraces(content: string, start: number): { block: string; end: number } | null {
|
|
45
|
-
if (content[start] !== '{') return null;
|
|
46
|
-
let depth = 1;
|
|
47
|
-
let i = start + 1;
|
|
48
|
-
while (i < content.length && depth > 0) {
|
|
49
|
-
if (content[i] === '{') depth++;
|
|
50
|
-
else if (content[i] === '}') depth--;
|
|
51
|
-
i++;
|
|
52
|
-
}
|
|
53
|
-
if (depth !== 0) return null;
|
|
54
|
-
return { block: content.slice(start + 1, i - 1), end: i };
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Extract balanced parentheses ( ... )
|
|
58
|
-
private static extractBalancedParens(content: string, start: number): { block: string; end: number } | null {
|
|
59
|
-
if (content[start] !== '(') return null;
|
|
60
|
-
let depth = 1;
|
|
61
|
-
let i = start + 1;
|
|
62
|
-
while (i < content.length && depth > 0) {
|
|
63
|
-
if (content[i] === '(') depth++;
|
|
64
|
-
else if (content[i] === ')') depth--;
|
|
65
|
-
i++;
|
|
66
|
-
}
|
|
67
|
-
if (depth !== 0) return null;
|
|
68
|
-
return { block: content.slice(start + 1, i - 1), end: i };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Predefined rules processed in order
|
|
72
|
-
private static rules: HMLEParserRule[] = [
|
|
73
|
-
// Rule: @for (item in items) { ... }
|
|
74
|
-
// Accept either single variable or index,value pair and either a variable/expr or a numeric literal
|
|
75
|
-
// Examples:
|
|
76
|
-
// @for (item in items) { ... }
|
|
77
|
-
// @for (idx, item in items) { ... }
|
|
78
|
-
// @for (i in 10) { ... }
|
|
79
|
-
new HMLEParserRule(/@for\s*\(\s*([A-Za-z_$][A-Za-z0-9_$]*)(?:\s*,\s*([A-Za-z_$][A-Za-z0-9_$]*))?\s+in\s+([A-Za-z_$][A-Za-z0-9_$.]*|[0-9]+)\s*\)\s*\{/g,
|
|
80
|
-
(parser, match, input, scope) => {
|
|
81
|
-
// match[1] = first identifier (either item OR index when pair syntax used)
|
|
82
|
-
// match[2] = optional second identifier (value when pair syntax used)
|
|
83
|
-
// match[3] = iterable expression (dotted path or numeric literal)
|
|
84
|
-
const maybeFirst = match[1];
|
|
85
|
-
const maybeSecond = match[2];
|
|
86
|
-
const iterableExpr = match[3];
|
|
87
|
-
const blockStart = match.index + match[0].length - 1; // position of '{'
|
|
88
|
-
|
|
89
|
-
const extracted = HMLEParser.extractBalancedBraces(input, blockStart);
|
|
90
|
-
if (!extracted) return match[0];
|
|
91
|
-
|
|
92
|
-
const inner = extracted.block;
|
|
93
|
-
// Support numeric literal or expression that resolves to a number
|
|
94
|
-
let arr: any[] = [];
|
|
95
|
-
// If the iterable part is a plain number literal, use it directly
|
|
96
|
-
if (/^\d+$/.test(iterableExpr)) {
|
|
97
|
-
const n = parseInt(iterableExpr, 10);
|
|
98
|
-
arr = Array.from({ length: Math.max(0, n) }, (_, i) => i);
|
|
99
|
-
} else {
|
|
100
|
-
const resolved = parser.resolveExpression(iterableExpr, scope);
|
|
101
|
-
if (typeof resolved === 'number' && isFinite(resolved)) {
|
|
102
|
-
const n = Math.max(0, Math.floor(resolved));
|
|
103
|
-
arr = Array.from({ length: n }, (_, i) => i);
|
|
104
|
-
} else if (Array.isArray(resolved)) {
|
|
105
|
-
arr = resolved;
|
|
106
|
-
} else {
|
|
107
|
-
arr = [];
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const parts: string[] = [];
|
|
112
|
-
for (let i = 0; i < arr.length; i++) {
|
|
113
|
-
const item = arr[i];
|
|
114
|
-
let fullScope: Record<string, any>;
|
|
115
|
-
// If two identifiers were provided, treat first as index and second as value
|
|
116
|
-
if (maybeSecond) {
|
|
117
|
-
fullScope = Object.assign({}, scope, { [maybeFirst]: i, [maybeSecond]: item });
|
|
118
|
-
} else {
|
|
119
|
-
// Single identifier: bind it to the item
|
|
120
|
-
fullScope = Object.assign({}, scope, { [maybeFirst]: item });
|
|
121
|
-
}
|
|
122
|
-
parts.push(parser.parse(inner, fullScope));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return { text: parts.join('\n'), end: extracted.end };
|
|
126
|
-
}
|
|
127
|
-
),
|
|
128
|
-
|
|
129
|
-
// Rule: @(( code )) — double-paren for complex expressions
|
|
130
|
-
new HMLEParserRule(/@\(\(/g,
|
|
131
|
-
(parser, match, input, scope) => {
|
|
132
|
-
const blockStart = match.index + match[0].length - 1; // points at inner '('
|
|
133
|
-
|
|
134
|
-
const extracted = HMLEParser.extractBalancedParens(input, blockStart);
|
|
135
|
-
if (!extracted) return match[0];
|
|
136
|
-
|
|
137
|
-
const code = extracted.block;
|
|
138
|
-
const ctx = parser.buildContext(scope);
|
|
139
|
-
let result: any;
|
|
140
|
-
try {
|
|
141
|
-
const fn = new Function('with(this){ return (' + code + '); }');
|
|
142
|
-
result = fn.call(ctx);
|
|
143
|
-
} catch (e) {
|
|
144
|
-
try {
|
|
145
|
-
const fn2 = new Function('with(this){ ' + code + ' }');
|
|
146
|
-
result = fn2.call(ctx);
|
|
147
|
-
} catch (e2) {
|
|
148
|
-
return { text: '', end: extracted.end };
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Skip outer ')' if present
|
|
153
|
-
let finalEnd = extracted.end;
|
|
154
|
-
if (input[extracted.end] === ')') finalEnd = extracted.end + 1;
|
|
155
|
-
|
|
156
|
-
return { text: parser.stringifyValue(result), end: finalEnd };
|
|
157
|
-
}
|
|
158
|
-
),
|
|
159
|
-
|
|
160
|
-
// Rule: @( code ) — single-paren expression
|
|
161
|
-
new HMLEParserRule(/@\(/g,
|
|
162
|
-
(parser, match, input, scope) => {
|
|
163
|
-
const blockStart = match.index + match[0].length - 1; // points at '('
|
|
164
|
-
|
|
165
|
-
const extracted = HMLEParser.extractBalancedParens(input, blockStart);
|
|
166
|
-
if (!extracted) return match[0];
|
|
167
|
-
|
|
168
|
-
const code = extracted.block;
|
|
169
|
-
const ctx = parser.buildContext(scope);
|
|
170
|
-
let result: any;
|
|
171
|
-
try {
|
|
172
|
-
const fn = new Function('with(this){ return (' + code + '); }');
|
|
173
|
-
result = fn.call(ctx);
|
|
174
|
-
} catch (e) {
|
|
175
|
-
try {
|
|
176
|
-
const fn2 = new Function('with(this){ ' + code + ' }');
|
|
177
|
-
result = fn2.call(ctx);
|
|
178
|
-
} catch (e2) {
|
|
179
|
-
return { text: '', end: extracted.end };
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
return { text: parser.stringifyValue(result), end: extracted.end };
|
|
184
|
-
}
|
|
185
|
-
),
|
|
186
|
-
];
|
|
187
|
-
|
|
188
|
-
// Stage 2: DOM rules for attribute processing
|
|
189
|
-
private static domRules: HMLEDOMRule[] = [
|
|
190
|
-
// Rule: @[on{eventName}] = "{expression}" — event binding
|
|
191
|
-
// Example: @[onclick] = "handleClick()""
|
|
192
|
-
// Expression is parsed from the attribute name itself: @[on{click}]= "code here"
|
|
193
|
-
new HMLEDOMRule(/^@\[on([A-Za-z]+)\]/g,
|
|
194
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
195
|
-
const eventName = match[1].toLowerCase(); // click, input, etc.
|
|
196
|
-
const code = attrValue; // expression from (...)
|
|
197
|
-
const ctx = parser.buildContext(scope);
|
|
198
|
-
|
|
199
|
-
const handler = (event: Event) => {
|
|
200
|
-
// Add $event to context
|
|
201
|
-
const eventCtx = Object.assign({}, ctx, { event: event, element: element });
|
|
202
|
-
try {
|
|
203
|
-
const fn = new Function('with(this){ ' + code + ' }');
|
|
204
|
-
fn.call(eventCtx);
|
|
205
|
-
} catch (e) {
|
|
206
|
-
console.error(`HMLEParser: Error in @[on${eventName}] handler:`, e);
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
element.addEventListener(eventName, handler);
|
|
211
|
-
//element.removeAttribute(attrName);
|
|
212
|
-
}
|
|
213
|
-
),
|
|
214
|
-
|
|
215
|
-
// Rule: @[bind:attribute](expression) — two-way binding
|
|
216
|
-
// Example: @[bind:value](inputValue)
|
|
217
|
-
/*new HMLEDOMRule(/^@\[bind:([A-Za-z-]+)\]$/,
|
|
218
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
219
|
-
const boundAttr = match[1];
|
|
220
|
-
const ctx = parser.buildContext(scope);
|
|
221
|
-
|
|
222
|
-
// Set initial value
|
|
223
|
-
const initialValue = parser.evaluateInContext(attrValue, ctx);
|
|
224
|
-
if (boundAttr === 'value' && 'value' in element) {
|
|
225
|
-
(element as HTMLInputElement).value = initialValue ?? '';
|
|
226
|
-
} else {
|
|
227
|
-
element.setAttribute(boundAttr, parser.stringifyValue(initialValue));
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// For input elements, listen for changes
|
|
231
|
-
if (boundAttr === 'value' && (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA' || element.tagName === 'SELECT')) {
|
|
232
|
-
element.addEventListener('input', (event) => {
|
|
233
|
-
const newValue = (event.target as HTMLInputElement).value;
|
|
234
|
-
// Try to update the bound variable in scope
|
|
235
|
-
if (scope && attrValue in scope) {
|
|
236
|
-
scope[attrValue] = newValue;
|
|
237
|
-
} else if (attrValue in parser.variables) {
|
|
238
|
-
parser.variables[attrValue] = newValue;
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
element.removeAttribute(attrName);
|
|
244
|
-
}
|
|
245
|
-
),*/
|
|
246
|
-
|
|
247
|
-
// Rule: @[ref] = "refName" — element reference
|
|
248
|
-
// Example: @[ref] = "myButton"
|
|
249
|
-
new HMLEDOMRule(/^@\[ref\]/g,
|
|
250
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
251
|
-
// attrValue may be a literal name or an expression that returns a string
|
|
252
|
-
// Evaluate the value in context first, falling back to the raw attrValue
|
|
253
|
-
const ctx = parser.buildContext(scope);
|
|
254
|
-
let refName: string | undefined;
|
|
255
|
-
if (attrValue && attrValue.trim() !== '') {
|
|
256
|
-
const evaluated = parser.evaluateInContext(attrValue, ctx);
|
|
257
|
-
if (typeof evaluated === 'string') refName = evaluated;
|
|
258
|
-
else if (evaluated != null) refName = String(evaluated);
|
|
259
|
-
else refName = attrValue; // fallback to literal attr value
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
if (refName) {
|
|
263
|
-
if (scope) {
|
|
264
|
-
(scope as any)[refName] = element;
|
|
265
|
-
} else {
|
|
266
|
-
parser.variables[refName] = element;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// keep attribute intact for debugging; parser consumer may remove it later
|
|
271
|
-
// element.removeAttribute(attrName);
|
|
272
|
-
}
|
|
273
|
-
),
|
|
274
|
-
|
|
275
|
-
// Rule: @[class:className](condition) — conditional class
|
|
276
|
-
// Example: @[class:active](isActive)
|
|
277
|
-
/*new HMLEDOMRule(/^@\[class:([A-Za-z_-][A-Za-z0-9_-]*)\]$/,
|
|
278
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
279
|
-
const className = match[1];
|
|
280
|
-
const ctx = parser.buildContext(scope);
|
|
281
|
-
const condition = parser.evaluateInContext(attrValue, ctx);
|
|
282
|
-
|
|
283
|
-
if (condition) {
|
|
284
|
-
element.classList.add(className);
|
|
285
|
-
} else {
|
|
286
|
-
element.classList.remove(className);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
element.removeAttribute(attrName);
|
|
290
|
-
}
|
|
291
|
-
),*/
|
|
292
|
-
|
|
293
|
-
// Rule: @[style:property](expression) — dynamic style
|
|
294
|
-
// Example: @[style:color](textColor)
|
|
295
|
-
/*new HMLEDOMRule(/^@\[style:([A-Za-z-]+)\]$/,
|
|
296
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
297
|
-
const styleProp = match[1];
|
|
298
|
-
const ctx = parser.buildContext(scope);
|
|
299
|
-
const value = parser.evaluateInContext(attrValue, ctx);
|
|
300
|
-
|
|
301
|
-
if (value != null) {
|
|
302
|
-
(element as HTMLElement).style.setProperty(styleProp, String(value));
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
element.removeAttribute(attrName);
|
|
306
|
-
}
|
|
307
|
-
),*/
|
|
308
|
-
|
|
309
|
-
// Rule: @[if](condition) — conditional rendering
|
|
310
|
-
// Example: @[if](showElement)
|
|
311
|
-
/*new HMLEDOMRule(/^@\[if\]$/,
|
|
312
|
-
(parser, element, attrName, attrValue, match, scope) => {
|
|
313
|
-
const ctx = parser.buildContext(scope);
|
|
314
|
-
const condition : boolean = parser.evaluateInContext(attrValue, ctx);
|
|
315
|
-
|
|
316
|
-
if (!condition) {
|
|
317
|
-
// Create a placeholder comment
|
|
318
|
-
const placeholder = document.createComment(`@[if](${attrValue})`);
|
|
319
|
-
element.parentNode?.replaceChild(placeholder, element);
|
|
320
|
-
} else {
|
|
321
|
-
element.removeAttribute(attrName);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
),*/
|
|
325
|
-
];
|
|
326
|
-
|
|
327
|
-
public variables: Record<string, unknown> = {};
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* Add a variable to the parser's global scope
|
|
331
|
-
*/
|
|
332
|
-
public addVariable(name: string, value: unknown): this {
|
|
333
|
-
this.variables[name] = value;
|
|
334
|
-
return this;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Build execution context that includes prototype methods from scope
|
|
339
|
-
*/
|
|
340
|
-
private buildContext(scope?: Record<string, any>): Record<string, any> {
|
|
341
|
-
const ctx: Record<string, any> = Object.assign({}, this.variables);
|
|
342
|
-
if (scope) {
|
|
343
|
-
// Copy own properties
|
|
344
|
-
Object.assign(ctx, scope);
|
|
345
|
-
// Copy prototype methods (for class instances)
|
|
346
|
-
let proto = Object.getPrototypeOf(scope);
|
|
347
|
-
while (proto && proto !== Object.prototype) {
|
|
348
|
-
// Avoid copying host (DOM/native) prototype methods which may throw
|
|
349
|
-
const ctorName = proto && proto.constructor ? String((proto as any).constructor?.name ?? '') : '';
|
|
350
|
-
if (/HTMLElement|Element|Node|EventTarget|Window|GlobalThis/i.test(ctorName)) {
|
|
351
|
-
// Skip host prototypes entirely
|
|
352
|
-
proto = Object.getPrototypeOf(proto);
|
|
353
|
-
continue;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
for (const key of Object.getOwnPropertyNames(proto)) {
|
|
357
|
-
if (key === 'constructor' || key in ctx) continue;
|
|
358
|
-
|
|
359
|
-
// Use descriptor to avoid triggering getters/accessors
|
|
360
|
-
let desc: PropertyDescriptor | undefined;
|
|
361
|
-
try {
|
|
362
|
-
desc = Object.getOwnPropertyDescriptor(proto, key) as PropertyDescriptor | undefined;
|
|
363
|
-
} catch (e) {
|
|
364
|
-
// Some host objects may throw on descriptor access — skip safely
|
|
365
|
-
continue;
|
|
366
|
-
}
|
|
367
|
-
if (!desc) continue;
|
|
368
|
-
|
|
369
|
-
// Only bind plain function values — don't copy getters/setters
|
|
370
|
-
if (typeof desc.value === 'function') {
|
|
371
|
-
try {
|
|
372
|
-
ctx[key] = (desc.value as Function).bind(scope);
|
|
373
|
-
} catch (e) {
|
|
374
|
-
// binding some native functions may throw; skip them
|
|
375
|
-
continue;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
proto = Object.getPrototypeOf(proto);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
return ctx;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* Resolve a dotted expression against the parser variables and optional local scope.
|
|
388
|
-
*/
|
|
389
|
-
public resolveExpression(expr: string, scope?: Record<string, any>): any {
|
|
390
|
-
const combined = this.buildContext(scope);
|
|
391
|
-
const parts = expr.split('.').map(p => p.trim()).filter(Boolean);
|
|
392
|
-
let cur: any = combined;
|
|
393
|
-
for (const part of parts) {
|
|
394
|
-
if (cur == null) return undefined;
|
|
395
|
-
cur = cur[part];
|
|
396
|
-
}
|
|
397
|
-
return cur;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Convert value to string for text content
|
|
402
|
-
*/
|
|
403
|
-
private stringifyValue(val: any): string {
|
|
404
|
-
if (val == null) return '';
|
|
405
|
-
if (typeof val === 'string') return val;
|
|
406
|
-
return String(val);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
/**
|
|
410
|
-
* Evaluate a JavaScript expression in a given context
|
|
411
|
-
*/
|
|
412
|
-
private evaluateInContext(code: string, ctx: Record<string, any>): any {
|
|
413
|
-
try {
|
|
414
|
-
const fn = new Function('with(this){ return (' + code + '); }');
|
|
415
|
-
return fn.call(ctx);
|
|
416
|
-
} catch (e) {
|
|
417
|
-
try {
|
|
418
|
-
const fn2 = new Function('with(this){ ' + code + ' }');
|
|
419
|
-
return fn2.call(ctx);
|
|
420
|
-
} catch (e2) {
|
|
421
|
-
return undefined;
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Parse HMLE template string and return processed HTML string
|
|
428
|
-
* @param content HMLE template string
|
|
429
|
-
* @param scope Optional scope object (can be a class instance)
|
|
430
|
-
* @returns Processed HTML string
|
|
431
|
-
*/
|
|
432
|
-
public parse(content: string, scope?: Record<string, any>): string {
|
|
433
|
-
let working = content;
|
|
434
|
-
|
|
435
|
-
for (const rule of HMLEParser.rules) {
|
|
436
|
-
const pattern = rule.pattern;
|
|
437
|
-
let result = '';
|
|
438
|
-
let lastIndex = 0;
|
|
439
|
-
let match: RegExpExecArray | null;
|
|
440
|
-
|
|
441
|
-
// Reset scanning position
|
|
442
|
-
pattern.lastIndex = 0;
|
|
443
|
-
while ((match = pattern.exec(working)) !== null) {
|
|
444
|
-
// Append text before this match
|
|
445
|
-
result += working.slice(lastIndex, match.index);
|
|
446
|
-
|
|
447
|
-
const out = rule.replacer(this, match, working, scope);
|
|
448
|
-
|
|
449
|
-
if (typeof out === 'string') {
|
|
450
|
-
result += out;
|
|
451
|
-
lastIndex = match.index + match[0].length;
|
|
452
|
-
} else {
|
|
453
|
-
result += out.text;
|
|
454
|
-
lastIndex = out.end;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
// Continue scanning from the correct position
|
|
458
|
-
pattern.lastIndex = lastIndex;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
// Append tail and update working
|
|
462
|
-
result += working.slice(lastIndex);
|
|
463
|
-
working = result;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
return working;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/**
|
|
470
|
-
* Stage 2: Process DOM rules on a fragment
|
|
471
|
-
* Walks all elements and applies DOM rules based on attributes
|
|
472
|
-
*/
|
|
473
|
-
private processDOMRules(fragment: DocumentFragment | Element, scope?: Record<string, any>): void {
|
|
474
|
-
const elements = fragment instanceof DocumentFragment
|
|
475
|
-
? Array.from(fragment.querySelectorAll('*'))
|
|
476
|
-
: [fragment, ...Array.from(fragment.querySelectorAll('*'))];
|
|
477
|
-
|
|
478
|
-
for (const element of elements) {
|
|
479
|
-
// Get all attributes to process (copy to avoid mutation issues)
|
|
480
|
-
const attrs = Array.from(element.attributes);
|
|
481
|
-
|
|
482
|
-
for (const attr of attrs) {
|
|
483
|
-
// Check each DOM rule
|
|
484
|
-
for (const rule of HMLEParser.domRules) {
|
|
485
|
-
rule.attrPattern.lastIndex = 0;
|
|
486
|
-
const match = rule.attrPattern.exec(attr.name);
|
|
487
|
-
if (match) {
|
|
488
|
-
rule.processor(this, element, attr.name, attr.value, match, scope);
|
|
489
|
-
break; // Only one rule per attribute
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
/**
|
|
497
|
-
* Parse HMLE template and create DOM elements (Stage 1 + Stage 2)
|
|
498
|
-
* @param content HMLE template string
|
|
499
|
-
* @param scope Optional scope object
|
|
500
|
-
* @returns DocumentFragment containing parsed HTML with bindings applied
|
|
501
|
-
*/
|
|
502
|
-
public parseToDOM(content: string, scope?: Record<string, any>): DocumentFragment {
|
|
503
|
-
// Stage 1: String processing
|
|
504
|
-
const html = this.parse(content, scope);
|
|
505
|
-
const template = document.createElement('template');
|
|
506
|
-
template.innerHTML = html.trim();
|
|
507
|
-
const fragment = template.content;
|
|
508
|
-
|
|
509
|
-
// Stage 2: DOM processing
|
|
510
|
-
this.processDOMRules(fragment, scope);
|
|
511
|
-
|
|
512
|
-
return fragment;
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
/**
|
|
516
|
-
* Parse HMLE template and return single element (first child)
|
|
517
|
-
* @param content HMLE template string
|
|
518
|
-
* @param scope Optional scope object
|
|
519
|
-
* @returns First element from parsed HTML, or null
|
|
520
|
-
*/
|
|
521
|
-
public parseToElement<T extends Element = Element>(content: string, scope?: Record<string, any>): T | null {
|
|
522
|
-
const fragment = this.parseToDOM(content, scope);
|
|
523
|
-
return fragment.firstElementChild as T | null;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
/**
|
|
527
|
-
* Parse and append to a parent element
|
|
528
|
-
* @param content HMLE template string
|
|
529
|
-
* @param parent Parent element to append to
|
|
530
|
-
* @param scope Optional scope object
|
|
531
|
-
* @returns The parent element
|
|
532
|
-
*/
|
|
533
|
-
public parseAndAppend(content: string, parent: Element, scope?: Record<string, any>): Element {
|
|
534
|
-
const fragment = this.parseToDOM(content, scope);
|
|
535
|
-
parent.appendChild(fragment);
|
|
536
|
-
return parent;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
/**
|
|
540
|
-
* Parse and replace element's innerHTML
|
|
541
|
-
* @param content HMLE template string
|
|
542
|
-
* @param element Element to update
|
|
543
|
-
* @param scope Optional scope object
|
|
544
|
-
* @returns The updated element
|
|
545
|
-
*/
|
|
546
|
-
public parseAndReplace(content: string, element: Element, scope?: Record<string, any>): Element {
|
|
547
|
-
const fragment = this.parseToDOM(content, scope);
|
|
548
|
-
element.innerHTML = '';
|
|
549
|
-
element.appendChild(fragment);
|
|
550
|
-
return element;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* Apply DOM rules to an existing element (Stage 2 only)
|
|
555
|
-
* Useful when you already have DOM and just want to process bindings
|
|
556
|
-
*/
|
|
557
|
-
public applyBindings(element: Element, scope?: Record<string, any>): Element {
|
|
558
|
-
this.processDOMRules(element, scope);
|
|
559
|
-
return element;
|
|
560
|
-
}
|
|
561
|
-
}
|