vsn 0.1.63 → 0.1.66

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 (60) hide show
  1. package/demo/demo.html +12 -1
  2. package/demo/vsn.js +2 -2
  3. package/demo/xhr.html +10 -3
  4. package/dist/AST/ClassNode.d.ts +3 -1
  5. package/dist/AST/ClassNode.js +43 -51
  6. package/dist/AST/ClassNode.js.map +1 -1
  7. package/dist/AST/ElementAttributeNode.d.ts +1 -1
  8. package/dist/AST/ElementAttributeNode.js +3 -2
  9. package/dist/AST/ElementAttributeNode.js.map +1 -1
  10. package/dist/AST/ElementQueryNode.d.ts +4 -4
  11. package/dist/AST/ElementQueryNode.js +17 -6
  12. package/dist/AST/ElementQueryNode.js.map +1 -1
  13. package/dist/AST/ElementStyleNode.d.ts +1 -1
  14. package/dist/AST/ElementStyleNode.js +3 -2
  15. package/dist/AST/ElementStyleNode.js.map +1 -1
  16. package/dist/AST/FunctionNode.d.ts +1 -1
  17. package/dist/AST/FunctionNode.js +4 -3
  18. package/dist/AST/FunctionNode.js.map +1 -1
  19. package/dist/AST/Node.d.ts +1 -1
  20. package/dist/AST/Node.js +3 -2
  21. package/dist/AST/Node.js.map +1 -1
  22. package/dist/AST/OnNode.d.ts +1 -1
  23. package/dist/AST/OnNode.js +5 -4
  24. package/dist/AST/OnNode.js.map +1 -1
  25. package/dist/AST.d.ts +1 -1
  26. package/dist/AST.js +1 -1
  27. package/dist/AST.js.map +1 -1
  28. package/dist/DOM.d.ts +7 -1
  29. package/dist/DOM.js +23 -3
  30. package/dist/DOM.js.map +1 -1
  31. package/dist/Registry.d.ts +3 -0
  32. package/dist/Registry.js +13 -0
  33. package/dist/Registry.js.map +1 -1
  34. package/dist/Scope.d.ts +1 -0
  35. package/dist/Scope.js +8 -4
  36. package/dist/Scope.js.map +1 -1
  37. package/dist/attributes/RootAttribute.d.ts +1 -0
  38. package/dist/attributes/RootAttribute.js +18 -6
  39. package/dist/attributes/RootAttribute.js.map +1 -1
  40. package/dist/helpers/ElementHelper.js +6 -0
  41. package/dist/helpers/ElementHelper.js.map +1 -1
  42. package/dist/vsn.js +4 -0
  43. package/dist/vsn.js.map +1 -1
  44. package/dist/vsn.min.js +2 -0
  45. package/package.json +1 -1
  46. package/src/AST/ClassNode.ts +20 -16
  47. package/src/AST/ElementAttributeNode.ts +2 -2
  48. package/src/AST/ElementQueryNode.ts +13 -5
  49. package/src/AST/ElementStyleNode.ts +2 -2
  50. package/src/AST/FunctionNode.ts +4 -3
  51. package/src/AST/Node.ts +2 -2
  52. package/src/AST/OnNode.ts +4 -4
  53. package/src/AST.ts +2 -3
  54. package/src/DOM.ts +19 -3
  55. package/src/Registry.ts +10 -0
  56. package/src/Scope.ts +8 -2
  57. package/src/attributes/RootAttribute.ts +11 -3
  58. package/src/helpers/ElementHelper.ts +6 -0
  59. package/src/vsn.ts +4 -0
  60. package/test/DOM.spec.ts +27 -0
package/demo/xhr.html CHANGED
@@ -21,7 +21,8 @@
21
21
  }
22
22
 
23
23
  on click() {
24
- console.log('clicky');
24
+ log('clicky');
25
+ t();
25
26
  }
26
27
 
27
28
  func t() {
@@ -35,6 +36,12 @@
35
36
  }
36
37
  }
37
38
 
39
+ class something-normal {
40
+ on click() {
41
+ log('also clicky');
42
+ }
43
+ }
44
+
38
45
  class reset-button {
39
46
  func construct() {
40
47
  @text = 'reset';
@@ -52,8 +59,8 @@
52
59
  return a + b;
53
60
  }
54
61
  </script>
55
- <div class="something-special" vsn-on:click="t()">asd</div>
56
- <div class="something-special" vsn-on:click="t()">asd</div>
62
+ <div class="something-special something-normal" id="dual-class">asd</div>
63
+ <div class="something-special">asd</div>
57
64
  <bb class="reset-button">bb</bb>
58
65
  <span vsn-bind="huh_wut"></span>
59
66
  <a href="" vsn-on:click|preventdefault="huh_wut = add(huh_wut, 1)">Click me!</a>
@@ -13,10 +13,12 @@ export declare class ClassNode extends Node implements TreeNode {
13
13
  protected requiresPrep: boolean;
14
14
  readonly classScope: Scope;
15
15
  constructor(name: string, block: BlockNode);
16
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
16
+ updateMeta(meta?: any): any;
17
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<void>;
17
18
  prepareTag(tag: Tag, dom: DOM, hasConstructor?: boolean | null): Promise<void>;
18
19
  tearDownTag(tag: Tag, dom: DOM, hasDeconstructor?: boolean | null): Promise<void>;
19
20
  evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
20
21
  static parse(lastNode: any, token: any, tokens: Token[]): ClassNode;
21
22
  static checkForClassChanges(element: HTMLElement, dom: DOM, tag?: Tag): Promise<void>;
23
+ static isClass(cls: string): boolean;
22
24
  }
@@ -67,38 +67,27 @@ var ClassNode = /** @class */ (function (_super) {
67
67
  _this.classScope = new Scope_1.Scope();
68
68
  return _this;
69
69
  }
70
- ClassNode.prototype.prepare = function (scope, dom, tag) {
70
+ ClassNode.prototype.updateMeta = function (meta) {
71
+ meta = meta || {};
72
+ meta['ClassNode'] = this;
73
+ return meta;
74
+ };
75
+ ClassNode.prototype.prepare = function (scope, dom, tag, meta) {
71
76
  if (tag === void 0) { tag = null; }
72
77
  return __awaiter(this, void 0, void 0, function () {
73
- var hasConstructor, _i, _a, element, tag_1;
74
- return __generator(this, function (_b) {
75
- switch (_b.label) {
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
76
80
  case 0:
81
+ meta = meta || {};
82
+ meta['ClassNodePrepare'] = true;
77
83
  if (ClassNode.classes[this.name])
78
84
  return [2 /*return*/]; // Don't re-prepare same classes
79
85
  ClassNode.classes[this.name] = this;
80
- return [4 /*yield*/, this.block.prepare(this.classScope, dom, tag)];
86
+ return [4 /*yield*/, this.block.prepare(this.classScope, dom, tag, meta)];
81
87
  case 1:
82
- _b.sent();
88
+ _a.sent();
83
89
  Registry_1.Registry.class(this);
84
- hasConstructor = this.classScope.has('construct');
85
- _i = 0, _a = Array.from(dom.querySelectorAll("." + this.name));
86
- _b.label = 2;
87
- case 2:
88
- if (!(_i < _a.length)) return [3 /*break*/, 6];
89
- element = _a[_i];
90
- return [4 /*yield*/, dom.getTagForElement(element, true)];
91
- case 3:
92
- tag_1 = _b.sent();
93
- if (!tag_1) return [3 /*break*/, 5];
94
- return [4 /*yield*/, this.prepareTag(tag_1, dom, hasConstructor)];
95
- case 4:
96
- _b.sent();
97
- _b.label = 5;
98
- case 5:
99
- _i++;
100
- return [3 /*break*/, 2];
101
- case 6: return [2 /*return*/];
90
+ return [2 /*return*/];
102
91
  }
103
92
  });
104
93
  });
@@ -106,14 +95,15 @@ var ClassNode = /** @class */ (function (_super) {
106
95
  ClassNode.prototype.prepareTag = function (tag, dom, hasConstructor) {
107
96
  if (hasConstructor === void 0) { hasConstructor = null; }
108
97
  return __awaiter(this, void 0, void 0, function () {
109
- var fnc;
98
+ var meta, fnc;
110
99
  return __generator(this, function (_a) {
111
100
  switch (_a.label) {
112
101
  case 0:
113
102
  if (hasConstructor === null)
114
103
  hasConstructor = this.classScope.has('construct');
115
104
  tag.createScope(true);
116
- return [4 /*yield*/, this.block.prepare(tag.scope, dom, tag)];
105
+ meta = this.updateMeta();
106
+ return [4 /*yield*/, this.block.prepare(tag.scope, dom, tag, meta)];
117
107
  case 1:
118
108
  _a.sent();
119
109
  if (!hasConstructor) return [3 /*break*/, 3];
@@ -183,7 +173,7 @@ var ClassNode = /** @class */ (function (_super) {
183
173
  break;
184
174
  nameParts.push(t.value);
185
175
  }
186
- var name = nameParts.join('');
176
+ var name = nameParts.join('').trim();
187
177
  tokens.splice(0, nameParts.length);
188
178
  var block = AST_1.Tree.processTokens(AST_1.Tree.getNextStatementTokens(tokens, true, true));
189
179
  return new ClassNode(name, block);
@@ -198,49 +188,51 @@ var ClassNode = /** @class */ (function (_super) {
198
188
  classes = Array.from(element.classList);
199
189
  addedClasses = classes.filter(function (c) { return Registry_1.Registry.instance.classes.has(c); });
200
190
  removedClasses = [];
201
- if (!tag) return [3 /*break*/, 1];
191
+ if (!!tag) return [3 /*break*/, 2];
192
+ return [4 /*yield*/, dom.getTagForElement(element, true)];
193
+ case 1:
194
+ tag = _b.sent();
195
+ _b.label = 2;
196
+ case 2:
202
197
  addedClasses = addedClasses.filter(function (c) { return !tag.preppedClasses.includes(c); });
203
198
  removedClasses = tag.preppedClasses.filter(function (c) { return !classes.includes(c); });
204
- return [3 /*break*/, 3];
205
- case 1: return [4 /*yield*/, dom.getTagForElement(element, true)];
206
- case 2:
207
- tag = _b.sent();
199
+ _i = 0, addedClasses_1 = addedClasses;
208
200
  _b.label = 3;
209
201
  case 3:
210
- _i = 0, addedClasses_1 = addedClasses;
211
- _b.label = 4;
212
- case 4:
213
- if (!(_i < addedClasses_1.length)) return [3 /*break*/, 7];
202
+ if (!(_i < addedClasses_1.length)) return [3 /*break*/, 6];
214
203
  addedClass = addedClasses_1[_i];
215
204
  classNode = Registry_1.Registry.instance.classes.getSynchronous(addedClass);
216
- if (!classNode) return [3 /*break*/, 6];
205
+ if (!classNode) return [3 /*break*/, 5];
217
206
  return [4 /*yield*/, classNode.prepareTag(tag, dom)];
218
- case 5:
207
+ case 4:
219
208
  _b.sent();
220
- _b.label = 6;
221
- case 6:
209
+ _b.label = 5;
210
+ case 5:
222
211
  _i++;
223
- return [3 /*break*/, 4];
224
- case 7:
212
+ return [3 /*break*/, 3];
213
+ case 6:
225
214
  _a = 0, removedClasses_1 = removedClasses;
226
- _b.label = 8;
227
- case 8:
228
- if (!(_a < removedClasses_1.length)) return [3 /*break*/, 11];
215
+ _b.label = 7;
216
+ case 7:
217
+ if (!(_a < removedClasses_1.length)) return [3 /*break*/, 10];
229
218
  removedClass = removedClasses_1[_a];
230
219
  classNode = Registry_1.Registry.instance.classes.getSynchronous(removedClass);
231
- if (!classNode) return [3 /*break*/, 10];
220
+ if (!classNode) return [3 /*break*/, 9];
232
221
  return [4 /*yield*/, classNode.tearDownTag(tag, dom)];
233
- case 9:
222
+ case 8:
234
223
  _b.sent();
235
- _b.label = 10;
236
- case 10:
224
+ _b.label = 9;
225
+ case 9:
237
226
  _a++;
238
- return [3 /*break*/, 8];
239
- case 11: return [2 /*return*/];
227
+ return [3 /*break*/, 7];
228
+ case 10: return [2 /*return*/];
240
229
  }
241
230
  });
242
231
  });
243
232
  };
233
+ ClassNode.isClass = function (cls) {
234
+ return this.classes[cls] instanceof ClassNode;
235
+ };
244
236
  ClassNode.classes = {};
245
237
  return ClassNode;
246
238
  }(Node_1.Node));
@@ -1 +1 @@
1
- {"version":3,"file":"ClassNode.js","sourceRoot":"","sources":["../../src/AST/ClassNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClassNode.js","sourceRoot":"","sources":["../../src/AST/ClassNode.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,5 @@ export declare class ElementAttributeNode extends Node implements TreeNode {
14
14
  protected _getChildNodes(): Node[];
15
15
  get attributeName(): string;
16
16
  evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
17
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
17
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<void>;
18
18
  }
@@ -115,15 +115,16 @@ var ElementAttributeNode = /** @class */ (function (_super) {
115
115
  });
116
116
  });
117
117
  };
118
- ElementAttributeNode.prototype.prepare = function (scope, dom, tag) {
118
+ ElementAttributeNode.prototype.prepare = function (scope, dom, tag, meta) {
119
119
  if (tag === void 0) { tag = null; }
120
+ if (meta === void 0) { meta = null; }
120
121
  return __awaiter(this, void 0, void 0, function () {
121
122
  var tags, _i, tags_1, t;
122
123
  return __generator(this, function (_a) {
123
124
  switch (_a.label) {
124
125
  case 0:
125
126
  if (!this.elementRef) return [3 /*break*/, 7];
126
- return [4 /*yield*/, this.elementRef.prepare(scope, dom, tag)];
127
+ return [4 /*yield*/, this.elementRef.prepare(scope, dom, tag, meta)];
127
128
  case 1:
128
129
  _a.sent();
129
130
  return [4 /*yield*/, this.elementRef.evaluate(scope, dom, tag, true)];
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAttributeNode.js","sourceRoot":"","sources":["../../src/AST/ElementAttributeNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oCAAoC;AAEpC,+BAA4B;AAE5B,6CAA0C;AAE1C;IAA0C,wCAAI;IAG1C,8BACoB,UAAmC,EACnC,IAAY;QAFhC,YAII,iBAAO,SACV;QAJmB,gBAAU,GAAV,UAAU,CAAyB;QACnC,UAAI,GAAJ,IAAI,CAAQ;QAJtB,kBAAY,GAAY,IAAI,CAAC;;IAOvC,CAAC;IAED,sBAAW,sCAAI;aAAf;YACI,OAAO,IAAI,yBAAW,CAAS,MAAI,IAAI,CAAC,aAAe,CAAC,CAAC;QAC7D,CAAC;;;OAAA;IAES,6CAAc,GAAxB;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,UAAU;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAI,+CAAa;aAAjB;YACI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAEK,uCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;;6BAE9C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACR,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD,CAAC;;;wBAC1D,IAAI,GAAG,EAAE;4BACZ,IAAI,GAAG,IAAI,cAAO,CAAC,GAAG,CAAC,CAAA;yBAC1B;6BAAM;4BACH,sBAAO;yBACV;;;wBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;4BACjB,sBAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,aAAe,CAAC,EAAC;wBAEvD,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,KAAI,CAAC,aAAe,CAAC,EAAvC,CAAuC,CAAC,EAAC;;;;KACrE;IAEK,sCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;6BAC7C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACf,qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBACzB,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAArE,IAAI,GAAY,SAAqD;8BACvD,EAAJ,aAAI;;;6BAAJ,CAAA,kBAAI,CAAA;wBAAT,CAAC;wBACR,qBAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;wBAD/B,IAAI,CAAA;;;;6BAEd,GAAG,EAAH,wBAAG;wBACT,qBAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;;;;;;KAEpD;IACL,2BAAC;AAAD,CAAC,AArDD,CAA0C,WAAI,GAqD7C;AArDY,oDAAoB"}
1
+ {"version":3,"file":"ElementAttributeNode.js","sourceRoot":"","sources":["../../src/AST/ElementAttributeNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oCAAoC;AAEpC,+BAA4B;AAE5B,6CAA0C;AAE1C;IAA0C,wCAAI;IAG1C,8BACoB,UAAmC,EACnC,IAAY;QAFhC,YAII,iBAAO,SACV;QAJmB,gBAAU,GAAV,UAAU,CAAyB;QACnC,UAAI,GAAJ,IAAI,CAAQ;QAJtB,kBAAY,GAAY,IAAI,CAAC;;IAOvC,CAAC;IAED,sBAAW,sCAAI;aAAf;YACI,OAAO,IAAI,yBAAW,CAAS,MAAI,IAAI,CAAC,aAAe,CAAC,CAAC;QAC7D,CAAC;;;OAAA;IAES,6CAAc,GAAxB;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,UAAU;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAI,+CAAa;aAAjB;YACI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAEK,uCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;;6BAE9C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACR,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD,CAAC;;;wBAC1D,IAAI,GAAG,EAAE;4BACZ,IAAI,GAAG,IAAI,cAAO,CAAC,GAAG,CAAC,CAAA;yBAC1B;6BAAM;4BACH,sBAAO;yBACV;;;wBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;4BACjB,sBAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,aAAe,CAAC,EAAC;wBAEvD,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,KAAI,CAAC,aAAe,CAAC,EAAvC,CAAuC,CAAC,EAAC;;;;KACrE;IAEK,sCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAgB;QAAjC,oBAAA,EAAA,UAAe;QAAE,qBAAA,EAAA,WAAgB;;;;;;6BAC/D,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACf,qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAApD,SAAoD,CAAC;wBAC/B,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAArE,IAAI,GAAY,SAAqD;8BACvD,EAAJ,aAAI;;;6BAAJ,CAAA,kBAAI,CAAA;wBAAT,CAAC;wBACR,qBAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;wBAD/B,IAAI,CAAA;;;;6BAEd,GAAG,EAAH,wBAAG;wBACT,qBAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAA5C,SAA4C,CAAC;;;;;;KAEpD;IACL,2BAAC;AAAD,CAAC,AArDD,CAA0C,WAAI,GAqD7C;AArDY,oDAAoB"}
@@ -1,15 +1,15 @@
1
1
  import { Scope } from "../Scope";
2
- import { DOM } from "../DOM";
2
+ import { DOM, EQuerySelectDirection } from "../DOM";
3
3
  import { Tag } from "../Tag";
4
4
  import { Token, TreeNode } from "../AST";
5
5
  import { Node } from "./Node";
6
6
  export declare class ElementQueryNode extends Node implements TreeNode {
7
7
  readonly query: string;
8
8
  readonly first: boolean;
9
- readonly global: boolean;
9
+ readonly direction: EQuerySelectDirection;
10
10
  protected requiresPrep: boolean;
11
- constructor(query: string, first?: boolean, global?: boolean);
11
+ constructor(query: string, first?: boolean, direction?: EQuerySelectDirection);
12
12
  evaluate(scope: Scope, dom: DOM, tag?: Tag, forceList?: boolean): Promise<any>;
13
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
13
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<any>;
14
14
  static parse(lastNode: any, token: any, tokens: Token[]): ElementQueryNode;
15
15
  }
@@ -52,16 +52,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.ElementQueryNode = void 0;
55
+ var DOM_1 = require("../DOM");
55
56
  var Node_1 = require("./Node");
56
57
  var ElementQueryNode = /** @class */ (function (_super) {
57
58
  __extends(ElementQueryNode, _super);
58
- function ElementQueryNode(query, first, global) {
59
+ function ElementQueryNode(query, first, direction) {
59
60
  if (first === void 0) { first = false; }
60
- if (global === void 0) { global = false; }
61
+ if (direction === void 0) { direction = DOM_1.EQuerySelectDirection.ALL; }
61
62
  var _this = _super.call(this) || this;
62
63
  _this.query = query;
63
64
  _this.first = first;
64
- _this.global = global;
65
+ _this.direction = direction;
65
66
  _this.requiresPrep = true;
66
67
  return _this;
67
68
  }
@@ -81,7 +82,7 @@ var ElementQueryNode = /** @class */ (function (_super) {
81
82
  _b.label = 2;
82
83
  case 2:
83
84
  tag = _a;
84
- return [4 /*yield*/, dom.get(this.query, true, this.global ? null : tag)];
85
+ return [4 /*yield*/, dom.get(this.query, true, tag, this.direction)];
85
86
  case 3:
86
87
  elements = _b.sent();
87
88
  return [2 /*return*/, this.first && !forceList ? elements[0] : elements];
@@ -89,8 +90,9 @@ var ElementQueryNode = /** @class */ (function (_super) {
89
90
  });
90
91
  });
91
92
  };
92
- ElementQueryNode.prototype.prepare = function (scope, dom, tag) {
93
+ ElementQueryNode.prototype.prepare = function (scope, dom, tag, meta) {
93
94
  if (tag === void 0) { tag = null; }
95
+ if (meta === void 0) { meta = null; }
94
96
  return __awaiter(this, void 0, void 0, function () {
95
97
  var _a;
96
98
  return __generator(this, function (_b) {
@@ -114,7 +116,16 @@ var ElementQueryNode = /** @class */ (function (_super) {
114
116
  };
115
117
  ElementQueryNode.parse = function (lastNode, token, tokens) {
116
118
  tokens.shift();
117
- return new ElementQueryNode(token.value, false, !token.full.startsWith('?>'));
119
+ var first = false;
120
+ var direction = DOM_1.EQuerySelectDirection.ALL;
121
+ if (token.full.startsWith('?>')) {
122
+ direction = DOM_1.EQuerySelectDirection.DOWN;
123
+ }
124
+ else if (token.full.startsWith('?<')) {
125
+ direction = DOM_1.EQuerySelectDirection.UP;
126
+ first = true;
127
+ }
128
+ return new ElementQueryNode(token.value, first, direction);
118
129
  };
119
130
  return ElementQueryNode;
120
131
  }(Node_1.Node));
@@ -1 +1 @@
1
- {"version":3,"file":"ElementQueryNode.js","sourceRoot":"","sources":["../../src/AST/ElementQueryNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,+BAA4B;AAE5B;IAAsC,oCAAI;IAGtC,0BACoB,KAAa,EACb,KAAsB,EACtB,MAAuB;QADvB,sBAAA,EAAA,aAAsB;QACtB,uBAAA,EAAA,cAAuB;QAH3C,YAKI,iBAAO,SACV;QALmB,WAAK,GAAL,KAAK,CAAQ;QACb,WAAK,GAAL,KAAK,CAAiB;QACtB,YAAM,GAAN,MAAM,CAAiB;QALjC,kBAAY,GAAY,IAAI,CAAC;;IAQvC,CAAC;IAEK,mCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,SAA0B;QAA3C,oBAAA,EAAA,UAAe;QAAE,0BAAA,EAAA,iBAA0B;;;;;;wBACxE,KAAA,GAAG,CAAA;gCAAH,wBAAG;wBAAI,qBAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAA;;8BAA/B,SAA+B;;;wBAA5C,GAAG,KAAyC,CAAC;wBAC5B,qBAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAA;;wBAApE,QAAQ,GAAG,SAAyD;wBAC1E,sBAAO,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;;;;KAC5D;IAEK,kCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;wBAC3C,KAAA,GAAG,CAAA;gCAAH,wBAAG;wBAAI,qBAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAA;;8BAA/B,SAA+B;;;wBAA5C,GAAG,KAAyC,CAAC;wBAC7C,qBAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAA;;wBAApC,SAAoC,CAAC;;;;;KACxC;IAEa,sBAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IACL,uBAAC;AAAD,CAAC,AA1BD,CAAsC,WAAI,GA0BzC;AA1BY,4CAAgB"}
1
+ {"version":3,"file":"ElementQueryNode.js","sourceRoot":"","sources":["../../src/AST/ElementQueryNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8BAAkD;AAGlD,+BAA4B;AAE5B;IAAsC,oCAAI;IAGtC,0BACoB,KAAa,EACb,KAAsB,EACtB,SAA4D;QAD5D,sBAAA,EAAA,aAAsB;QACtB,0BAAA,EAAA,YAAmC,2BAAqB,CAAC,GAAG;QAHhF,YAKI,iBAAO,SACV;QALmB,WAAK,GAAL,KAAK,CAAQ;QACb,WAAK,GAAL,KAAK,CAAiB;QACtB,eAAS,GAAT,SAAS,CAAmD;QALtE,kBAAY,GAAY,IAAI,CAAC;;IAQvC,CAAC;IAEK,mCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,SAA0B;QAA3C,oBAAA,EAAA,UAAe;QAAE,0BAAA,EAAA,iBAA0B;;;;;;wBACxE,KAAA,GAAG,CAAA;gCAAH,wBAAG;wBAAI,qBAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAA;;8BAA/B,SAA+B;;;wBAA5C,GAAG,KAAyC,CAAC;wBAC5B,qBAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAA;;wBAA/D,QAAQ,GAAG,SAAoD;wBACrE,sBAAO,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC;;;;KAC5D;IAEK,kCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAgB;QAAjC,oBAAA,EAAA,UAAe;QAAE,qBAAA,EAAA,WAAgB;;;;;;wBAC7D,KAAA,GAAG,CAAA;gCAAH,wBAAG;wBAAI,qBAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAA;;8BAA/B,SAA+B;;;wBAA5C,GAAG,KAAyC,CAAC;wBAC7C,qBAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAA;;wBAApC,SAAoC,CAAC;;;;;KACxC;IAEa,sBAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,GAAG,2BAAqB,CAAC,GAAG,CAAC;QAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC7B,SAAS,GAAG,2BAAqB,CAAC,IAAI,CAAC;SAC1C;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACpC,SAAS,GAAG,2BAAqB,CAAC,EAAE,CAAC;YACrC,KAAK,GAAG,IAAI,CAAC;SAChB;QACD,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACL,uBAAC;AAAD,CAAC,AAlCD,CAAsC,WAAI,GAkCzC;AAlCY,4CAAgB"}
@@ -14,5 +14,5 @@ export declare class ElementStyleNode extends Node implements TreeNode {
14
14
  protected _getChildNodes(): Node[];
15
15
  get attributeName(): string;
16
16
  evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<any>;
17
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
17
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<void>;
18
18
  }
@@ -115,15 +115,16 @@ var ElementStyleNode = /** @class */ (function (_super) {
115
115
  });
116
116
  });
117
117
  };
118
- ElementStyleNode.prototype.prepare = function (scope, dom, tag) {
118
+ ElementStyleNode.prototype.prepare = function (scope, dom, tag, meta) {
119
119
  if (tag === void 0) { tag = null; }
120
+ if (meta === void 0) { meta = null; }
120
121
  return __awaiter(this, void 0, void 0, function () {
121
122
  var tags, _i, tags_1, t;
122
123
  return __generator(this, function (_a) {
123
124
  switch (_a.label) {
124
125
  case 0:
125
126
  if (!this.elementRef) return [3 /*break*/, 7];
126
- return [4 /*yield*/, this.elementRef.prepare(scope, dom, tag)];
127
+ return [4 /*yield*/, this.elementRef.prepare(scope, dom, tag, meta)];
127
128
  case 1:
128
129
  _a.sent();
129
130
  return [4 /*yield*/, this.elementRef.evaluate(scope, dom, tag, true)];
@@ -1 +1 @@
1
- {"version":3,"file":"ElementStyleNode.js","sourceRoot":"","sources":["../../src/AST/ElementStyleNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oCAAoC;AAEpC,+BAA4B;AAE5B,6CAA0C;AAE1C;IAAsC,oCAAI;IAGtC,0BACoB,UAAmC,EACnC,IAAY;QAFhC,YAII,iBAAO,SACV;QAJmB,gBAAU,GAAV,UAAU,CAAyB;QACnC,UAAI,GAAJ,IAAI,CAAQ;QAJtB,kBAAY,GAAY,IAAI,CAAC;;IAOvC,CAAC;IAED,sBAAW,kCAAI;aAAf;YACI,OAAO,IAAI,yBAAW,CAAS,MAAI,IAAI,CAAC,aAAe,CAAC,CAAC;QAC7D,CAAC;;;OAAA;IAES,yCAAc,GAAxB;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,UAAU;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAI,2CAAa;aAAjB;YACI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAEK,mCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;;6BAE9C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACR,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD,CAAC;;;wBAC1D,IAAI,GAAG,EAAE;4BACZ,IAAI,GAAG,IAAI,cAAO,CAAC,GAAG,CAAC,CAAA;yBAC1B;6BAAM;4BACH,sBAAO;yBACV;;;wBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;4BACjB,sBAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,aAAe,CAAC,EAAC;wBAEvD,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,KAAI,CAAC,aAAe,CAAC,EAAvC,CAAuC,CAAC,EAAC;;;;KACrE;IAEK,kCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;6BAC7C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACf,qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBACzB,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAArE,IAAI,GAAY,SAAqD;8BACvD,EAAJ,aAAI;;;6BAAJ,CAAA,kBAAI,CAAA;wBAAT,CAAC;wBACR,qBAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAAtC,SAAsC,CAAC;;;wBAD3B,IAAI,CAAA;;;;6BAEd,GAAG,EAAH,wBAAG;wBACT,qBAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAAxC,SAAwC,CAAC;;;;;;KAEhD;IACL,uBAAC;AAAD,CAAC,AArDD,CAAsC,WAAI,GAqDzC;AArDY,4CAAgB"}
1
+ {"version":3,"file":"ElementStyleNode.js","sourceRoot":"","sources":["../../src/AST/ElementStyleNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oCAAoC;AAEpC,+BAA4B;AAE5B,6CAA0C;AAE1C;IAAsC,oCAAI;IAGtC,0BACoB,UAAmC,EACnC,IAAY;QAFhC,YAII,iBAAO,SACV;QAJmB,gBAAU,GAAV,UAAU,CAAyB;QACnC,UAAI,GAAJ,IAAI,CAAQ;QAJtB,kBAAY,GAAY,IAAI,CAAC;;IAOvC,CAAC;IAED,sBAAW,kCAAI;aAAf;YACI,OAAO,IAAI,yBAAW,CAAS,MAAI,IAAI,CAAC,aAAe,CAAC,CAAC;QAC7D,CAAC;;;OAAA;IAES,yCAAc,GAAxB;QACI,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,UAAU;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAI,2CAAa;aAAjB;YACI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;;;OAAA;IAEK,mCAAQ,GAAd,UAAe,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;;6BAE9C,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACR,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA5D,IAAI,GAAG,SAAqD,CAAC;;;wBAC1D,IAAI,GAAG,EAAE;4BACZ,IAAI,GAAG,IAAI,cAAO,CAAC,GAAG,CAAC,CAAA;yBAC1B;6BAAM;4BACH,sBAAO;yBACV;;;wBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;4BACjB,sBAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,IAAI,CAAC,aAAe,CAAC,EAAC;wBAEvD,sBAAO,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAI,KAAI,CAAC,aAAe,CAAC,EAAvC,CAAuC,CAAC,EAAC;;;;KACrE;IAEK,kCAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAgB;QAAjC,oBAAA,EAAA,UAAe;QAAE,qBAAA,EAAA,WAAgB;;;;;;6BAC/D,IAAI,CAAC,UAAU,EAAf,wBAAe;wBACf,qBAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAApD,SAAoD,CAAC;wBAC/B,qBAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAArE,IAAI,GAAY,SAAqD;8BACvD,EAAJ,aAAI;;;6BAAJ,CAAA,kBAAI,CAAA;wBAAT,CAAC;wBACR,qBAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAAtC,SAAsC,CAAC;;;wBAD3B,IAAI,CAAA;;;;6BAEd,GAAG,EAAH,wBAAG;wBACT,qBAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAAxC,SAAwC,CAAC;;;;;;KAEhD;IACL,uBAAC;AAAD,CAAC,AArDD,CAAsC,WAAI,GAqDzC;AArDY,4CAAgB"}
@@ -11,7 +11,7 @@ export declare class FunctionNode extends Node implements TreeNode {
11
11
  protected requiresPrep: boolean;
12
12
  constructor(name: string, args: string[], block: BlockNode);
13
13
  protected _getChildNodes(): Node[];
14
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
14
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<void>;
15
15
  evaluate(scope: Scope, dom: DOM, tag?: Tag): Promise<(...args: any[]) => Promise<any>>;
16
16
  getFunction(scope: Scope, dom: DOM, tag?: Tag): Promise<(...args: any[]) => Promise<any>>;
17
17
  static parse<T = FunctionNode>(lastNode: any, token: any, tokens: Token[], cls?: any): FunctionNode;
@@ -70,14 +70,15 @@ var FunctionNode = /** @class */ (function (_super) {
70
70
  this.block
71
71
  ];
72
72
  };
73
- FunctionNode.prototype.prepare = function (scope, dom, tag) {
73
+ FunctionNode.prototype.prepare = function (scope, dom, tag, meta) {
74
74
  if (tag === void 0) { tag = null; }
75
75
  return __awaiter(this, void 0, void 0, function () {
76
76
  return __generator(this, function (_a) {
77
77
  switch (_a.label) {
78
78
  case 0:
79
- scope.set(this.name, this);
80
- return [4 /*yield*/, _super.prototype.prepare.call(this, scope, dom, tag)];
79
+ if (!(meta === null || meta === void 0 ? void 0 : meta.ClassNode)) // Don't muddle up tag scope if we're in a class
80
+ scope.set(this.name, this);
81
+ return [4 /*yield*/, _super.prototype.prepare.call(this, scope, dom, tag, meta)];
81
82
  case 1:
82
83
  _a.sent();
83
84
  return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionNode.js","sourceRoot":"","sources":["../../src/AST/FunctionNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA8C;AAG9C,8BAA6C;AAC7C,+BAA4B;AAG5B;IAAkC,gCAAI;IAGlC,sBACoB,IAAY,EACZ,IAAc,EACd,KAAgB;QAHpC,YAKI,iBAAO,SACV;QALmB,UAAI,GAAJ,IAAI,CAAQ;QACZ,UAAI,GAAJ,IAAI,CAAU;QACd,WAAK,GAAL,KAAK,CAAW;QAL1B,kBAAY,GAAY,IAAI,CAAC;;IAQvC,CAAC;IAES,qCAAc,GAAxB;QACI,OAAO;YACH,IAAI,CAAC,KAAK;SACb,CAAC;IACN,CAAC;IAEY,8BAAO,GAApB,UAAqB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;wBACxD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC3B,qBAAM,iBAAM,OAAO,YAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAApC,SAAoC,CAAC;;;;;KACxC;IAEY,+BAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;4BAClD,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4BAA9C,sBAAO,SAAuC,EAAC;;;;KAClD;IAEY,kCAAW,GAAxB,UAAyB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;gBAC5D,sBAAO;wBAAO,cAAO;6BAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;4BAAP,yBAAO;;;;;;;wCACX,aAAa,GAAG,IAAI,qBAAa,CAAC,KAAK,CAAC,CAAC;wCAC/C,WAA2B,EAAT,KAAA,IAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS,EAAE;4CAAlB,GAAG;4CACV,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;yCACxC;wCACM,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4CAAzD,sBAAO,SAAkD,EAAC;;;;qBAC7D,EAAA;;;KACJ;IAEa,kBAAK,GAAnB,UAAsC,QAAQ,EAAE,KAAK,EAAE,MAAe,EAAE,GAAuB;QAAvB,oBAAA,EAAA,kBAAuB;QAC3F,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc;QAC9B,IAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAM,SAAS,GAAG,UAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAgB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;YAAtB,IAAM,CAAC,kBAAA;YACR,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAM,KAAK,GAAG,UAAI,CAAC,aAAa,CAAC,UAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IACL,mBAAC;AAAD,CAAC,AA/CD,CAAkC,WAAI,GA+CrC;AA/CY,oCAAY"}
1
+ {"version":3,"file":"FunctionNode.js","sourceRoot":"","sources":["../../src/AST/FunctionNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kCAA8C;AAG9C,8BAA6C;AAC7C,+BAA4B;AAG5B;IAAkC,gCAAI;IAGlC,sBACoB,IAAY,EACZ,IAAc,EACd,KAAgB;QAHpC,YAKI,iBAAO,SACV;QALmB,UAAI,GAAJ,IAAI,CAAQ;QACZ,UAAI,GAAJ,IAAI,CAAU;QACd,WAAK,GAAL,KAAK,CAAW;QAL1B,kBAAY,GAAY,IAAI,CAAC;;IAQvC,CAAC;IAES,qCAAc,GAAxB;QACI,OAAO;YACH,IAAI,CAAC,KAAK;SACb,CAAC;IACN,CAAC;IAEY,8BAAO,GAApB,UAAqB,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAU;QAA3B,oBAAA,EAAA,UAAe;;;;;wBACxD,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAA,EAAE,gDAAgD;4BAClE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC/B,qBAAM,iBAAM,OAAO,YAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;;;KAC9C;IAEY,+BAAQ,GAArB,UAAsB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;4BAClD,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4BAA9C,sBAAO,SAAuC,EAAC;;;;KAClD;IAEY,kCAAW,GAAxB,UAAyB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;gBAC5D,sBAAO;wBAAO,cAAO;6BAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;4BAAP,yBAAO;;;;;;;wCACX,aAAa,GAAG,IAAI,qBAAa,CAAC,KAAK,CAAC,CAAC;wCAC/C,WAA2B,EAAT,KAAA,IAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS,EAAE;4CAAlB,GAAG;4CACV,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;yCACxC;wCACM,qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;4CAAzD,sBAAO,SAAkD,EAAC;;;;qBAC7D,EAAA;;;KACJ;IAEa,kBAAK,GAAnB,UAAsC,QAAQ,EAAE,KAAK,EAAE,MAAe,EAAE,GAAuB;QAAvB,oBAAA,EAAA,kBAAuB;QAC3F,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc;QAC9B,IAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAM,SAAS,GAAG,UAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAgB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;YAAtB,IAAM,CAAC,kBAAA;YACR,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAM,KAAK,GAAG,UAAI,CAAC,aAAa,CAAC,UAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IACL,mBAAC;AAAD,CAAC,AAhDD,CAAkC,WAAI,GAgDrC;AAhDY,oCAAY"}
@@ -11,7 +11,7 @@ export declare abstract class Node implements TreeNode {
11
11
  };
12
12
  abstract evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
13
13
  isPreparationRequired(): boolean;
14
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
14
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): Promise<void>;
15
15
  protected _getChildNodes(): Node[];
16
16
  getChildNodes(): Node[];
17
17
  findChildrenByType<T = Node>(t: any): T[];
package/dist/AST/Node.js CHANGED
@@ -56,8 +56,9 @@ var Node = /** @class */ (function () {
56
56
  }
57
57
  return false;
58
58
  };
59
- Node.prototype.prepare = function (scope, dom, tag) {
59
+ Node.prototype.prepare = function (scope, dom, tag, meta) {
60
60
  if (tag === void 0) { tag = null; }
61
+ if (meta === void 0) { meta = null; }
61
62
  return __awaiter(this, void 0, void 0, function () {
62
63
  var _i, _a, node;
63
64
  return __generator(this, function (_b) {
@@ -68,7 +69,7 @@ var Node = /** @class */ (function () {
68
69
  case 1:
69
70
  if (!(_i < _a.length)) return [3 /*break*/, 4];
70
71
  node = _a[_i];
71
- return [4 /*yield*/, node.prepare(scope, dom, tag)];
72
+ return [4 /*yield*/, node.prepare(scope, dom, tag, meta)];
72
73
  case 2:
73
74
  _b.sent();
74
75
  _b.label = 3;
@@ -1 +1 @@
1
- {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/AST/Node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;IAAA;QACc,iBAAY,GAAY,KAAK,CAAC;QAG9B,cAAS,GAA4B,EAAE,CAAC;IA4DtD,CAAC;IAzDG,oCAAqB,GAArB;QACI,IAAI,IAAI,CAAC,YAAY;YACjB,OAAO,IAAI,CAAC;QAEhB,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;YACzC,OAAO,IAAI,CAAC,sBAAsB,CAAC;QAEvC,KAAmB,UAAoB,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE,EAApB,cAAoB,EAApB,IAAoB,EAAE;YAApC,IAAM,IAAI,SAAA;YACX,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACnC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEK,sBAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;8BACV,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE;;;6BAApB,CAAA,cAAoB,CAAA;wBAA5B,IAAI;wBACX,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAAnC,SAAmC,CAAC;;;wBADrB,IAAoB,CAAA;;;;;;KAG1C;IAES,6BAAc,GAAxB;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,4BAAa,GAAb;QACI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,iCAAkB,GAAlB,UAA6B,CAAM;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,kCAAmB,GAAnB,UAA8B,KAAY,EAAE,QAAuB;QAAvB,yBAAA,EAAA,eAAuB;QAC/D,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAQ,CAAC;QAE3C,IAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAoB,UAAoB,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE,EAApB,cAAoB,EAApB,IAAoB,EAAE;YAArC,IAAM,KAAK,SAAA;YACZ,KAAgB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gBAAlB,IAAM,CAAC,cAAA;gBACR,IAAI,KAAK,YAAY,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;gBAClC,IAAM,UAAU,GAAQ,KAAK,CAAC,kBAAkB,CAAI,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,OAAV,KAAK,EAAS,UAAU,EAAE;aAC7B;SACJ;QAED,IAAI,QAAQ,KAAK,IAAI;YACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAY,CAAC;QAE5C,OAAO,KAAK,CAAC;IACjB,CAAC;IACL,WAAC;AAAD,CAAC,AAhED,IAgEC;AAhEqB,oBAAI"}
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/AST/Node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;IAAA;QACc,iBAAY,GAAY,KAAK,CAAC;QAG9B,cAAS,GAA4B,EAAE,CAAC;IA4DtD,CAAC;IAzDG,oCAAqB,GAArB;QACI,IAAI,IAAI,CAAC,YAAY;YACjB,OAAO,IAAI,CAAC;QAEhB,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;YACzC,OAAO,IAAI,CAAC,sBAAsB,CAAC;QAEvC,KAAmB,UAAoB,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE,EAApB,cAAoB,EAApB,IAAoB,EAAE;YAApC,IAAM,IAAI,SAAA;YACX,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACnC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEK,sBAAO,GAAb,UAAc,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAgB;QAAjC,oBAAA,EAAA,UAAe;QAAE,qBAAA,EAAA,WAAgB;;;;;;8BAC5B,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE;;;6BAApB,CAAA,cAAoB,CAAA;wBAA5B,IAAI;wBACX,qBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAAzC,SAAyC,CAAC;;;wBAD3B,IAAoB,CAAA;;;;;;KAG1C;IAES,6BAAc,GAAxB;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,4BAAa,GAAb;QACI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,iCAAkB,GAAlB,UAA6B,CAAM;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,kCAAmB,GAAnB,UAA8B,KAAY,EAAE,QAAuB;QAAvB,yBAAA,EAAA,eAAuB;QAC/D,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAQ,CAAC;QAE3C,IAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAoB,UAAoB,EAApB,KAAA,IAAI,CAAC,aAAa,EAAE,EAApB,cAAoB,EAApB,IAAoB,EAAE;YAArC,IAAM,KAAK,SAAA;YACZ,KAAgB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gBAAlB,IAAM,CAAC,cAAA;gBACR,IAAI,KAAK,YAAY,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;gBAClC,IAAM,UAAU,GAAQ,KAAK,CAAC,kBAAkB,CAAI,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,OAAV,KAAK,EAAS,UAAU,EAAE;aAC7B;SACJ;QAED,IAAI,QAAQ,KAAK,IAAI;YACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAY,CAAC;QAE5C,OAAO,KAAK,CAAC;IACjB,CAAC;IACL,WAAC;AAAD,CAAC,AAhED,IAgEC;AAhEqB,oBAAI"}
@@ -4,6 +4,6 @@ import { Scope } from "../Scope";
4
4
  import { DOM } from "../DOM";
5
5
  import { Tag } from "../Tag";
6
6
  export declare class OnNode extends FunctionNode implements TreeNode {
7
- prepare(scope: Scope, dom: DOM, tag?: Tag): Promise<void>;
7
+ prepare(scope: Scope, dom: DOM, tag: Tag, meta: any): Promise<void>;
8
8
  static parse(lastNode: any, token: any, tokens: Token[]): OnNode;
9
9
  }
@@ -58,21 +58,22 @@ var OnNode = /** @class */ (function (_super) {
58
58
  function OnNode() {
59
59
  return _super !== null && _super.apply(this, arguments) || this;
60
60
  }
61
- OnNode.prototype.prepare = function (scope, dom, tag) {
61
+ OnNode.prototype.prepare = function (scope, dom, tag, meta) {
62
62
  if (tag === void 0) { tag = null; }
63
63
  return __awaiter(this, void 0, void 0, function () {
64
- var _a, _b, _c;
64
+ var classPrep, _a, _b, _c;
65
65
  return __generator(this, function (_d) {
66
66
  switch (_d.label) {
67
67
  case 0:
68
- if (!tag) return [3 /*break*/, 2];
68
+ classPrep = meta === null || meta === void 0 ? void 0 : meta.ClassNodePrepare;
69
+ if (!(tag && !classPrep)) return [3 /*break*/, 2];
69
70
  _b = (_a = tag).addEventHandler;
70
71
  _c = [this.name, []];
71
72
  return [4 /*yield*/, this.getFunction(scope, dom, tag)];
72
73
  case 1:
73
74
  _b.apply(_a, _c.concat([_d.sent(), this]));
74
75
  _d.label = 2;
75
- case 2: return [4 /*yield*/, _super.prototype.prepare.call(this, scope, dom, tag)];
76
+ case 2: return [4 /*yield*/, _super.prototype.prepare.call(this, scope, dom, tag, meta)];
76
77
  case 3:
77
78
  _d.sent();
78
79
  return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"OnNode.js","sourceRoot":"","sources":["../../src/AST/OnNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4C;AAK5C;IAA4B,0BAAY;IAAxC;;IAWA,CAAC;IAVgB,wBAAO,GAApB,UAAqB,KAAY,EAAE,GAAQ,EAAE,GAAe;QAAf,oBAAA,EAAA,UAAe;;;;;;6BACpD,GAAG,EAAH,wBAAG;wBACH,KAAA,CAAA,KAAA,GAAG,CAAA,CAAC,eAAe,CAAA;8BAAC,IAAI,CAAC,IAAI,EAAE,EAAE;wBAAE,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA1E,wBAAmC,SAAuC,EAAE,IAAI,GAAC,CAAC;;4BAEtF,qBAAM,iBAAM,OAAO,YAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAApC,SAAoC,CAAC;;;;;KACxC;IAEa,YAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,OAAO,OAAM,KAAK,YAAS,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACL,aAAC;AAAD,CAAC,AAXD,CAA4B,2BAAY,GAWvC;AAXY,wBAAM"}
1
+ {"version":3,"file":"OnNode.js","sourceRoot":"","sources":["../../src/AST/OnNode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4C;AAK5C;IAA4B,0BAAY;IAAxC;;IAWA,CAAC;IAVgB,wBAAO,GAApB,UAAqB,KAAY,EAAE,GAAQ,EAAE,GAAe,EAAE,IAAI;QAArB,oBAAA,EAAA,UAAe;;;;;;wBAClD,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC;6BACrC,CAAA,GAAG,IAAI,CAAC,SAAS,CAAA,EAAjB,wBAAiB;wBACjB,KAAA,CAAA,KAAA,GAAG,CAAA,CAAC,eAAe,CAAA;8BAAC,IAAI,CAAC,IAAI,EAAE,EAAE;wBAAE,qBAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAA;;wBAA1E,wBAAmC,SAAuC,EAAE,IAAI,GAAC,CAAC;;4BACtF,qBAAM,iBAAM,OAAO,YAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;;;KAC9C;IAEa,YAAK,GAAnB,UAAoB,QAAQ,EAAE,KAAK,EAAE,MAAe;QAChD,OAAO,OAAM,KAAK,YAAS,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACL,aAAC;AAAD,CAAC,AAXD,CAA4B,2BAAY,GAWvC;AAXY,wBAAM"}
package/dist/AST.d.ts CHANGED
@@ -85,7 +85,7 @@ export declare enum TokenType {
85
85
  }
86
86
  export interface TreeNode<T = any> {
87
87
  evaluate(scope: Scope, dom: DOM, tag?: Tag): any;
88
- prepare(scope: Scope, dom: DOM, tag?: Tag): any;
88
+ prepare(scope: Scope, dom: DOM, tag?: Tag, meta?: any): any;
89
89
  }
90
90
  export interface IBlockInfo {
91
91
  type: BlockType;
package/dist/AST.js CHANGED
@@ -247,7 +247,7 @@ var TOKEN_PATTERNS = [
247
247
  },
248
248
  {
249
249
  type: TokenType.ELEMENT_QUERY,
250
- pattern: /^\?>?\(([#.\[\]:,=\-_a-zA-Z0-9*\s]*[\]_a-zA-Z0-9*])\)/
250
+ pattern: /^\?[>|<]?\(([#.\[\]:,=\-_a-zA-Z0-9*\s]*[\]_a-zA-Z0-9*])\)/
251
251
  },
252
252
  {
253
253
  type: TokenType.NAME,