vsn 0.1.26 → 0.1.27

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 (191) hide show
  1. package/dist/AST.js +2197 -0
  2. package/dist/AST.js.map +1 -0
  3. package/dist/Attribute.d.ts +1 -1
  4. package/dist/Attribute.js +187 -0
  5. package/dist/Attribute.js.map +1 -0
  6. package/dist/Bencmark.js +179 -0
  7. package/dist/Bencmark.js.map +1 -0
  8. package/dist/Configuration.d.ts +1 -1
  9. package/dist/Configuration.js +64 -0
  10. package/dist/Configuration.js.map +1 -0
  11. package/dist/Controller.d.ts +1 -1
  12. package/dist/Controller.js +54 -0
  13. package/dist/Controller.js.map +1 -0
  14. package/dist/DOM/DOMObject.d.ts +1 -1
  15. package/dist/DOM/DOMObject.js +47 -0
  16. package/dist/DOM/DOMObject.js.map +1 -0
  17. package/dist/DOM/WrappedDocument.js +34 -0
  18. package/dist/DOM/WrappedDocument.js.map +1 -0
  19. package/dist/DOM/WrappedWindow.js +45 -0
  20. package/dist/DOM/WrappedWindow.js.map +1 -0
  21. package/dist/DOM.d.ts +1 -1
  22. package/dist/DOM.js +547 -0
  23. package/dist/DOM.js.map +1 -0
  24. package/dist/EventDispatcher.d.ts +26 -0
  25. package/dist/EventDispatcher.js +117 -0
  26. package/dist/EventDispatcher.js.map +1 -0
  27. package/dist/Formats.js +44 -0
  28. package/dist/Formats.js.map +1 -0
  29. package/dist/MessageList.d.ts +14 -0
  30. package/dist/MessageList.js +88 -0
  31. package/dist/MessageList.js.map +1 -0
  32. package/dist/Model/Collection.d.ts +5 -0
  33. package/dist/Model/Collection.js +37 -0
  34. package/dist/Model/Collection.js.map +1 -0
  35. package/dist/Model/DataModel.d.ts +6 -0
  36. package/dist/Model/DataModel.js +54 -0
  37. package/dist/Model/DataModel.js.map +1 -0
  38. package/dist/Model/ModelAbstract.d.ts +20 -0
  39. package/dist/Model/ModelAbstract.js +122 -0
  40. package/dist/Model/ModelAbstract.js.map +1 -0
  41. package/dist/Model/fields/BooleanField.d.ts +5 -0
  42. package/dist/Model/fields/BooleanField.js +43 -0
  43. package/dist/Model/fields/BooleanField.js.map +1 -0
  44. package/dist/Model/fields/EmailField.d.ts +5 -0
  45. package/dist/Model/fields/EmailField.js +36 -0
  46. package/dist/Model/fields/EmailField.js.map +1 -0
  47. package/dist/Model/fields/Field.d.ts +13 -0
  48. package/dist/Model/fields/Field.js +79 -0
  49. package/dist/Model/fields/Field.js.map +1 -0
  50. package/dist/Model/fields/FloatField.d.ts +5 -0
  51. package/dist/Model/fields/FloatField.js +47 -0
  52. package/dist/Model/fields/FloatField.js.map +1 -0
  53. package/dist/Model/fields/PositiveNumberField.d.ts +5 -0
  54. package/dist/Model/fields/PositiveNumberField.js +51 -0
  55. package/dist/Model/fields/PositiveNumberField.js.map +1 -0
  56. package/dist/Model/fields/StringField.d.ts +5 -0
  57. package/dist/Model/fields/StringField.js +43 -0
  58. package/dist/Model/fields/StringField.js.map +1 -0
  59. package/dist/Model.d.ts +11 -0
  60. package/dist/Model.js +72 -0
  61. package/dist/Model.js.map +1 -0
  62. package/dist/Query.js +66 -0
  63. package/dist/Query.js.map +1 -0
  64. package/dist/Registry.d.ts +2 -2
  65. package/dist/Registry.js +128 -0
  66. package/dist/Registry.js.map +1 -0
  67. package/dist/Scope.d.ts +7 -10
  68. package/dist/Scope.js +462 -0
  69. package/dist/Scope.js.map +1 -0
  70. package/dist/SimplePromise.d.ts +42 -0
  71. package/dist/SimplePromise.js +217 -0
  72. package/dist/SimplePromise.js.map +1 -0
  73. package/dist/Tag/List.js +85 -0
  74. package/dist/Tag/List.js.map +1 -0
  75. package/dist/Tag.js +770 -0
  76. package/dist/Tag.js.map +1 -0
  77. package/dist/Types.js +48 -0
  78. package/dist/Types.js.map +1 -0
  79. package/dist/attributes/AddClassIf.js +93 -0
  80. package/dist/attributes/AddClassIf.js.map +1 -0
  81. package/dist/attributes/Bind.js +272 -0
  82. package/dist/attributes/Bind.js.map +1 -0
  83. package/dist/attributes/ClassConstructor.js +104 -0
  84. package/dist/attributes/ClassConstructor.js.map +1 -0
  85. package/dist/attributes/ClickRemoveClass.js +114 -0
  86. package/dist/attributes/ClickRemoveClass.js.map +1 -0
  87. package/dist/attributes/ClickToggleClass.js +114 -0
  88. package/dist/attributes/ClickToggleClass.js.map +1 -0
  89. package/dist/attributes/ControllerAttribute.js +28 -0
  90. package/dist/attributes/ControllerAttribute.js.map +1 -0
  91. package/dist/attributes/DisableIf.js +94 -0
  92. package/dist/attributes/DisableIf.js.map +1 -0
  93. package/dist/attributes/Exec.js +108 -0
  94. package/dist/attributes/Exec.js.map +1 -0
  95. package/dist/attributes/Format.js +99 -0
  96. package/dist/attributes/Format.js.map +1 -0
  97. package/dist/attributes/If.js +159 -0
  98. package/dist/attributes/If.js.map +1 -0
  99. package/dist/attributes/JSONAttribute.js +118 -0
  100. package/dist/attributes/JSONAttribute.js.map +1 -0
  101. package/dist/attributes/KeyAbstract.js +117 -0
  102. package/dist/attributes/KeyAbstract.js.map +1 -0
  103. package/dist/attributes/KeyDown.js +88 -0
  104. package/dist/attributes/KeyDown.js.map +1 -0
  105. package/dist/attributes/KeyUp.js +88 -0
  106. package/dist/attributes/KeyUp.js.map +1 -0
  107. package/dist/attributes/List.js +282 -0
  108. package/dist/attributes/List.js.map +1 -0
  109. package/dist/attributes/ListItem.js +138 -0
  110. package/dist/attributes/ListItem.js.map +1 -0
  111. package/dist/attributes/ListItemModel.js +39 -0
  112. package/dist/attributes/ListItemModel.js.map +1 -0
  113. package/dist/attributes/ModelAttribute.js +29 -0
  114. package/dist/attributes/ModelAttribute.js.map +1 -0
  115. package/dist/attributes/Name.js +88 -0
  116. package/dist/attributes/Name.js.map +1 -0
  117. package/dist/attributes/On.js +135 -0
  118. package/dist/attributes/On.js.map +1 -0
  119. package/dist/attributes/Radio.js +174 -0
  120. package/dist/attributes/Radio.js.map +1 -0
  121. package/dist/attributes/Referenced.js +38 -0
  122. package/dist/attributes/Referenced.js.map +1 -0
  123. package/dist/attributes/RootAttribute.js +91 -0
  124. package/dist/attributes/RootAttribute.js.map +1 -0
  125. package/dist/attributes/ScopeAttribute.js +40 -0
  126. package/dist/attributes/ScopeAttribute.js.map +1 -0
  127. package/dist/attributes/ScopeChange.js +130 -0
  128. package/dist/attributes/ScopeChange.js.map +1 -0
  129. package/dist/attributes/SetAttribute.js +133 -0
  130. package/dist/attributes/SetAttribute.js.map +1 -0
  131. package/dist/attributes/StandardAttribute.js +186 -0
  132. package/dist/attributes/StandardAttribute.js.map +1 -0
  133. package/dist/attributes/StyleAttribute.js +183 -0
  134. package/dist/attributes/StyleAttribute.js.map +1 -0
  135. package/dist/attributes/Template.js +39 -0
  136. package/dist/attributes/Template.js.map +1 -0
  137. package/dist/attributes/TypeAttribute.js +104 -0
  138. package/dist/attributes/TypeAttribute.js.map +1 -0
  139. package/dist/attributes/_imports.js +60 -0
  140. package/dist/attributes/_imports.js.map +1 -0
  141. package/dist/helpers/DOMHelper.js +81 -0
  142. package/dist/helpers/DOMHelper.js.map +1 -0
  143. package/dist/helpers/ElementHelper.js +25 -0
  144. package/dist/helpers/ElementHelper.js.map +1 -0
  145. package/dist/helpers/VisionHelper.js +71 -0
  146. package/dist/helpers/VisionHelper.js.map +1 -0
  147. package/dist/helpers/decorators.js +38 -0
  148. package/dist/helpers/decorators.js.map +1 -0
  149. package/dist/vsn.d.ts +2 -1
  150. package/dist/vsn.js +166 -0
  151. package/dist/vsn.js.map +1 -0
  152. package/package.json +2 -6
  153. package/src/AST.ts +2 -2
  154. package/src/Attribute.ts +2 -2
  155. package/src/Configuration.ts +3 -3
  156. package/src/Controller.ts +1 -1
  157. package/src/DOM/DOMObject.ts +1 -1
  158. package/src/DOM.ts +3 -3
  159. package/src/EventDispatcher.ts +117 -0
  160. package/src/Formats.ts +2 -2
  161. package/src/MessageList.ts +81 -0
  162. package/src/Model/Collection.ts +13 -0
  163. package/src/Model/DataModel.ts +29 -0
  164. package/src/Model/ModelAbstract.ts +114 -0
  165. package/src/Model/fields/BooleanField.ts +16 -0
  166. package/src/Model/fields/EmailField.ts +12 -0
  167. package/src/Model/fields/Field.ts +65 -0
  168. package/src/Model/fields/FloatField.ts +22 -0
  169. package/src/Model/fields/PositiveNumberField.ts +24 -0
  170. package/src/Model/fields/StringField.ts +16 -0
  171. package/src/Model.ts +57 -0
  172. package/src/Registry.ts +3 -3
  173. package/src/Scope.ts +33 -89
  174. package/src/SimplePromise.ts +219 -0
  175. package/src/Tag.ts +2 -2
  176. package/src/attributes/Bind.ts +1 -1
  177. package/src/attributes/List.ts +3 -3
  178. package/src/attributes/Radio.ts +1 -1
  179. package/src/attributes/ScopeChange.ts +1 -1
  180. package/src/attributes/StandardAttribute.ts +1 -1
  181. package/src/attributes/StyleAttribute.ts +1 -1
  182. package/src/vsn.ts +3 -2
  183. package/test/AST.spec.ts +2 -1
  184. package/test/MessageList.spec.ts +101 -0
  185. package/test/Model/DataModel.spec.ts +141 -0
  186. package/test/Model.spec.ts +306 -0
  187. package/test/Scope.spec.ts +2 -2
  188. package/test/SimplePromise.spec.ts +271 -0
  189. package/test/attributes/Bind.spec.ts +5 -5
  190. package/test/attributes/ListItem.spec.ts +1 -1
  191. package/dist/vsn.min.js +0 -1
package/dist/DOM.js ADDED
@@ -0,0 +1,547 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
54
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
55
+ to[j] = from[i];
56
+ return to;
57
+ };
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.DOM = void 0;
60
+ var Tag_1 = require("./Tag");
61
+ var ElementHelper_1 = require("./helpers/ElementHelper");
62
+ var Configuration_1 = require("./Configuration");
63
+ var AST_1 = require("./AST");
64
+ var List_1 = require("./Tag/List");
65
+ var Bencmark_1 = require("./Bencmark");
66
+ var VisionHelper_1 = require("./helpers/VisionHelper");
67
+ var WrappedWindow_1 = require("./DOM/WrappedWindow");
68
+ var WrappedDocument_1 = require("./DOM/WrappedDocument");
69
+ var EventDispatcher_1 = require("./EventDispatcher");
70
+ var DOM = /** @class */ (function (_super) {
71
+ __extends(DOM, _super);
72
+ function DOM(rootElement, build, debug) {
73
+ if (build === void 0) { build = true; }
74
+ if (debug === void 0) { debug = false; }
75
+ var _this = _super.call(this) || this;
76
+ _this.rootElement = rootElement;
77
+ _this.debug = debug;
78
+ _this.queued = [];
79
+ _this.observer = new MutationObserver(_this.mutation.bind(_this));
80
+ _this.tags = [];
81
+ _this.window = new WrappedWindow_1.WrappedWindow(window);
82
+ _this.document = new WrappedDocument_1.WrappedDocument(window.document);
83
+ if (build) {
84
+ _this.buildFrom(rootElement, true);
85
+ }
86
+ _this.evaluate();
87
+ Configuration_1.Configuration.instance.on('change', _this.evaluate.bind(_this));
88
+ return _this;
89
+ }
90
+ Object.defineProperty(DOM.prototype, "root", {
91
+ get: function () {
92
+ return this._root;
93
+ },
94
+ enumerable: false,
95
+ configurable: true
96
+ });
97
+ DOM.prototype.get = function (selector, create, tag) {
98
+ if (create === void 0) { create = false; }
99
+ if (tag === void 0) { tag = null; }
100
+ return __awaiter(this, void 0, void 0, function () {
101
+ var _a, nodes;
102
+ return __generator(this, function (_b) {
103
+ switch (_b.label) {
104
+ case 0:
105
+ _a = selector;
106
+ switch (_a) {
107
+ case 'window': return [3 /*break*/, 1];
108
+ case 'document': return [3 /*break*/, 2];
109
+ }
110
+ return [3 /*break*/, 3];
111
+ case 1: return [2 /*return*/, new List_1.TagList(this.window)];
112
+ case 2: return [2 /*return*/, new List_1.TagList(this.document)];
113
+ case 3:
114
+ nodes = this.querySelectorAll(selector, tag);
115
+ return [4 /*yield*/, this.getTagsForElements(Array.from(nodes), create)];
116
+ case 4: return [2 /*return*/, _b.sent()];
117
+ }
118
+ });
119
+ });
120
+ };
121
+ DOM.prototype.getFromTag = function (tag, selector, create) {
122
+ if (create === void 0) { create = false; }
123
+ return __awaiter(this, void 0, void 0, function () {
124
+ var nodes;
125
+ return __generator(this, function (_a) {
126
+ switch (_a.label) {
127
+ case 0:
128
+ nodes = this.querySelectorElement(tag.element, selector);
129
+ return [4 /*yield*/, this.getTagsForElements(Array.from(nodes), create)];
130
+ case 1: return [2 /*return*/, _a.sent()];
131
+ }
132
+ });
133
+ });
134
+ };
135
+ DOM.prototype.registerElementInRoot = function (tag) {
136
+ var id = tag.element.getAttribute('id');
137
+ if (!!id)
138
+ this.root.scope.set("#" + id, tag.scope);
139
+ };
140
+ DOM.prototype.querySelectorAll = function (q, tag) {
141
+ if (tag === void 0) { tag = null; }
142
+ var element = tag && !q.startsWith('#') ? tag.element : this.rootElement;
143
+ return this.querySelectorElement(element, q);
144
+ };
145
+ DOM.prototype.querySelectorElement = function (element, q) {
146
+ var parentIndex = q.indexOf(':parent');
147
+ if (parentIndex > -1) {
148
+ var _q = q.substring(0, parentIndex);
149
+ var rest = q.substring(parentIndex + 7);
150
+ if (_q.length > 0) {
151
+ var nodeList = [];
152
+ for (var _i = 0, _a = Array.from(this.querySelectorElement(element, _q)); _i < _a.length; _i++) {
153
+ var _element = _a[_i];
154
+ if (rest.length > 0) {
155
+ nodeList.push.apply(nodeList, Array.from(this.querySelectorElement(_element.parentElement, rest)));
156
+ }
157
+ else {
158
+ nodeList.push(_element.parentElement);
159
+ }
160
+ }
161
+ return nodeList;
162
+ }
163
+ else if (rest.length === 0) {
164
+ return [element.parentElement];
165
+ }
166
+ else {
167
+ return this.querySelectorElement(element.parentElement, rest);
168
+ }
169
+ }
170
+ return element.querySelectorAll(q);
171
+ };
172
+ DOM.prototype.querySelector = function (q) {
173
+ return this.rootElement.querySelector(q);
174
+ };
175
+ DOM.prototype.eval = function (code) {
176
+ return __awaiter(this, void 0, void 0, function () {
177
+ var tree;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ tree = new AST_1.Tree(code);
182
+ return [4 /*yield*/, tree.prepare(this.root.scope, this)];
183
+ case 1:
184
+ _a.sent();
185
+ return [4 /*yield*/, tree.evaluate(this.root.scope, this)];
186
+ case 2: return [2 /*return*/, _a.sent()];
187
+ }
188
+ });
189
+ });
190
+ };
191
+ DOM.prototype.evaluate = function () {
192
+ return __awaiter(this, void 0, void 0, function () {
193
+ var _i, _a, tag;
194
+ return __generator(this, function (_b) {
195
+ switch (_b.label) {
196
+ case 0:
197
+ clearTimeout(this.evaluateTimeout);
198
+ _i = 0, _a = this.tags;
199
+ _b.label = 1;
200
+ case 1:
201
+ if (!(_i < _a.length)) return [3 /*break*/, 4];
202
+ tag = _a[_i];
203
+ return [4 /*yield*/, tag.evaluate()];
204
+ case 2:
205
+ _b.sent();
206
+ _b.label = 3;
207
+ case 3:
208
+ _i++;
209
+ return [3 /*break*/, 1];
210
+ case 4: return [2 /*return*/];
211
+ }
212
+ });
213
+ });
214
+ };
215
+ DOM.prototype.mutation = function (mutations) {
216
+ return __awaiter(this, void 0, void 0, function () {
217
+ var _i, mutations_1, mutation, tag;
218
+ return __generator(this, function (_a) {
219
+ switch (_a.label) {
220
+ case 0:
221
+ _i = 0, mutations_1 = mutations;
222
+ _a.label = 1;
223
+ case 1:
224
+ if (!(_i < mutations_1.length)) return [3 /*break*/, 4];
225
+ mutation = mutations_1[_i];
226
+ return [4 /*yield*/, this.getTagForElement(mutation.target)];
227
+ case 2:
228
+ tag = _a.sent();
229
+ if (tag) {
230
+ tag.mutate(mutation);
231
+ }
232
+ _a.label = 3;
233
+ case 3:
234
+ _i++;
235
+ return [3 /*break*/, 1];
236
+ case 4: return [2 /*return*/];
237
+ }
238
+ });
239
+ });
240
+ };
241
+ DOM.prototype.buildFrom = function (ele, isRoot) {
242
+ if (isRoot === void 0) { isRoot = false; }
243
+ return __awaiter(this, void 0, void 0, function () {
244
+ var allElements, _i, _a, tag, newTags, toBuild, toSkip, _b, _c, element, _d, toBuild_1, element, tag, _e, _f, newTags_1, tag, _g, newTags_2, tag, _h, newTags_3, tag, parentElement, foundParent, _j, _k, newTags_4, tag, _l, newTags_5, tag, _m, newTags_6, tag, _o, newTags_7, tag, _p, newTags_8, tag;
245
+ return __generator(this, function (_r) {
246
+ switch (_r.label) {
247
+ case 0:
248
+ allElements = [];
249
+ if (isRoot) {
250
+ document.body.setAttribute('vsn-root', '');
251
+ document.ondragover = function (e) { return e.preventDefault(); }; // Allow dragging over document
252
+ }
253
+ for (_i = 0, _a = this.tags; _i < _a.length; _i++) {
254
+ tag = _a[_i];
255
+ allElements.push(tag.element);
256
+ }
257
+ newTags = [];
258
+ toBuild = [];
259
+ toSkip = [];
260
+ if (VisionHelper_1.VisionHelper.doBenchmark)
261
+ Bencmark_1.benchmarkStart('DOM', 'findElements');
262
+ if (ele && ele.querySelectorAll) {
263
+ for (_b = 0, _c = Array.from(ele.querySelectorAll("*")); _b < _c.length; _b++) { // Don't build items more than once
264
+ element = _c[_b];
265
+ if (!ElementHelper_1.ElementHelper.hasVisionAttribute(element))
266
+ continue;
267
+ if ((element.hasAttribute('vsn-template') && element.tagName === 'template') || toSkip.indexOf(element.parentElement) > -1) {
268
+ toSkip.push(element);
269
+ continue;
270
+ }
271
+ if (this.queued.indexOf(element) > -1)
272
+ continue;
273
+ this.queued.push(element);
274
+ toBuild.push(element);
275
+ }
276
+ }
277
+ if (VisionHelper_1.VisionHelper.doBenchmark)
278
+ Bencmark_1.benchmarkEnd('DOM', 'findElements');
279
+ if (VisionHelper_1.VisionHelper.doBenchmark)
280
+ Bencmark_1.benchmarkStart('DOM', 'buildTags');
281
+ for (_d = 0, toBuild_1 = toBuild; _d < toBuild_1.length; _d++) {
282
+ element = toBuild_1[_d];
283
+ if (allElements.indexOf(element) > -1)
284
+ continue;
285
+ tag = new Tag_1.Tag(element, this);
286
+ this.tags.push(tag);
287
+ newTags.push(tag);
288
+ allElements.push(element);
289
+ }
290
+ if (VisionHelper_1.VisionHelper.doBenchmark)
291
+ Bencmark_1.benchmarkEnd('DOM', 'buildTags');
292
+ if (!isRoot) return [3 /*break*/, 2];
293
+ _e = this;
294
+ return [4 /*yield*/, this.getTagForElement(document.body)];
295
+ case 1:
296
+ _e._root = _r.sent();
297
+ _r.label = 2;
298
+ case 2:
299
+ // Configure, setup & execute attributes
300
+ if (VisionHelper_1.VisionHelper.doBenchmark)
301
+ Bencmark_1.benchmarkStart('DOM', 'buildTagAttributes');
302
+ _f = 0, newTags_1 = newTags;
303
+ _r.label = 3;
304
+ case 3:
305
+ if (!(_f < newTags_1.length)) return [3 /*break*/, 6];
306
+ tag = newTags_1[_f];
307
+ return [4 /*yield*/, tag.buildAttributes()];
308
+ case 4:
309
+ _r.sent();
310
+ _r.label = 5;
311
+ case 5:
312
+ _f++;
313
+ return [3 /*break*/, 3];
314
+ case 6:
315
+ if (VisionHelper_1.VisionHelper.doBenchmark)
316
+ Bencmark_1.benchmarkEnd('DOM', 'buildTagAttributes');
317
+ if (VisionHelper_1.VisionHelper.inDevelopment)
318
+ Bencmark_1.benchmarkStart('DOM', 'compileAttributes');
319
+ _g = 0, newTags_2 = newTags;
320
+ _r.label = 7;
321
+ case 7:
322
+ if (!(_g < newTags_2.length)) return [3 /*break*/, 10];
323
+ tag = newTags_2[_g];
324
+ return [4 /*yield*/, tag.compileAttributes()];
325
+ case 8:
326
+ _r.sent();
327
+ _r.label = 9;
328
+ case 9:
329
+ _g++;
330
+ return [3 /*break*/, 7];
331
+ case 10:
332
+ if (VisionHelper_1.VisionHelper.doBenchmark)
333
+ Bencmark_1.benchmarkEnd('DOM', 'compileAttributes');
334
+ if (VisionHelper_1.VisionHelper.doBenchmark)
335
+ Bencmark_1.benchmarkStart('DOM', 'buildTree');
336
+ _h = 0, newTags_3 = newTags;
337
+ _r.label = 11;
338
+ case 11:
339
+ if (!(_h < newTags_3.length)) return [3 /*break*/, 17];
340
+ tag = newTags_3[_h];
341
+ if (tag === this.root)
342
+ return [3 /*break*/, 16];
343
+ parentElement = tag.element.parentElement;
344
+ foundParent = false;
345
+ _r.label = 12;
346
+ case 12:
347
+ if (!parentElement) return [3 /*break*/, 15];
348
+ if (!(allElements.indexOf(parentElement) > -1)) return [3 /*break*/, 14];
349
+ foundParent = true;
350
+ _j = tag;
351
+ return [4 /*yield*/, this.getTagForElement(parentElement)];
352
+ case 13:
353
+ _j.parentTag = _r.sent();
354
+ return [3 /*break*/, 15];
355
+ case 14:
356
+ parentElement = parentElement.parentElement;
357
+ return [3 /*break*/, 12];
358
+ case 15:
359
+ if (!foundParent)
360
+ console.error('Could not find parent for ', tag);
361
+ _r.label = 16;
362
+ case 16:
363
+ _h++;
364
+ return [3 /*break*/, 11];
365
+ case 17:
366
+ if (VisionHelper_1.VisionHelper.doBenchmark)
367
+ Bencmark_1.benchmarkEnd('DOM', 'buildTree');
368
+ if (VisionHelper_1.VisionHelper.doBenchmark)
369
+ Bencmark_1.benchmarkStart('DOM', 'setupAttributes');
370
+ _k = 0, newTags_4 = newTags;
371
+ _r.label = 18;
372
+ case 18:
373
+ if (!(_k < newTags_4.length)) return [3 /*break*/, 21];
374
+ tag = newTags_4[_k];
375
+ return [4 /*yield*/, tag.setupAttributes()];
376
+ case 19:
377
+ _r.sent();
378
+ _r.label = 20;
379
+ case 20:
380
+ _k++;
381
+ return [3 /*break*/, 18];
382
+ case 21:
383
+ if (VisionHelper_1.VisionHelper.doBenchmark)
384
+ Bencmark_1.benchmarkEnd('DOM', 'setupAttributes');
385
+ if (VisionHelper_1.VisionHelper.doBenchmark)
386
+ Bencmark_1.benchmarkStart('DOM', 'extractAttributes');
387
+ _l = 0, newTags_5 = newTags;
388
+ _r.label = 22;
389
+ case 22:
390
+ if (!(_l < newTags_5.length)) return [3 /*break*/, 25];
391
+ tag = newTags_5[_l];
392
+ return [4 /*yield*/, tag.extractAttributes()];
393
+ case 23:
394
+ _r.sent();
395
+ _r.label = 24;
396
+ case 24:
397
+ _l++;
398
+ return [3 /*break*/, 22];
399
+ case 25:
400
+ if (VisionHelper_1.VisionHelper.doBenchmark)
401
+ Bencmark_1.benchmarkEnd('DOM', 'extractAttributes');
402
+ if (VisionHelper_1.VisionHelper.doBenchmark)
403
+ Bencmark_1.benchmarkStart('DOM', 'connectAttributes');
404
+ _m = 0, newTags_6 = newTags;
405
+ _r.label = 26;
406
+ case 26:
407
+ if (!(_m < newTags_6.length)) return [3 /*break*/, 29];
408
+ tag = newTags_6[_m];
409
+ return [4 /*yield*/, tag.connectAttributes()];
410
+ case 27:
411
+ _r.sent();
412
+ _r.label = 28;
413
+ case 28:
414
+ _m++;
415
+ return [3 /*break*/, 26];
416
+ case 29:
417
+ if (VisionHelper_1.VisionHelper.doBenchmark)
418
+ Bencmark_1.benchmarkEnd('DOM', 'connectAttributes');
419
+ if (VisionHelper_1.VisionHelper.doBenchmark)
420
+ Bencmark_1.benchmarkStart('DOM', 'finalizeTags');
421
+ _o = 0, newTags_7 = newTags;
422
+ _r.label = 30;
423
+ case 30:
424
+ if (!(_o < newTags_7.length)) return [3 /*break*/, 33];
425
+ tag = newTags_7[_o];
426
+ return [4 /*yield*/, tag.finalize()];
427
+ case 31:
428
+ _r.sent();
429
+ this.queued.splice(this.queued.indexOf(tag.element), 1);
430
+ _r.label = 32;
431
+ case 32:
432
+ _o++;
433
+ return [3 /*break*/, 30];
434
+ case 33:
435
+ if (VisionHelper_1.VisionHelper.doBenchmark)
436
+ Bencmark_1.benchmarkEnd('DOM', 'finalizeTags');
437
+ if (VisionHelper_1.VisionHelper.doBenchmark)
438
+ Bencmark_1.benchmarkStart('DOM', 'observeTags');
439
+ for (_p = 0, newTags_8 = newTags; _p < newTags_8.length; _p++) {
440
+ tag = newTags_8[_p];
441
+ this.observer.observe(tag.element, {
442
+ attributes: true,
443
+ characterData: true,
444
+ childList: true,
445
+ subtree: true
446
+ });
447
+ }
448
+ if (VisionHelper_1.VisionHelper.doBenchmark)
449
+ Bencmark_1.benchmarkEnd('DOM', 'observeTags');
450
+ this.dispatch('built');
451
+ return [2 /*return*/];
452
+ }
453
+ });
454
+ });
455
+ };
456
+ DOM.prototype.getTagsForElements = function (elements, create) {
457
+ if (create === void 0) { create = false; }
458
+ return __awaiter(this, void 0, void 0, function () {
459
+ var tags, found, _i, _a, tag, notFound, i, element, _b, notFound_1, element, _c, _d;
460
+ return __generator(this, function (_e) {
461
+ switch (_e.label) {
462
+ case 0:
463
+ tags = new List_1.TagList();
464
+ found = [];
465
+ for (_i = 0, _a = this.tags; _i < _a.length; _i++) {
466
+ tag = _a[_i];
467
+ if (elements.indexOf(tag.element) > -1) {
468
+ tags.push(tag);
469
+ found.push(tag.element);
470
+ }
471
+ }
472
+ if (!create) return [3 /*break*/, 4];
473
+ notFound = __spreadArray([], elements);
474
+ for (i = notFound.length; i >= 0; i--) {
475
+ element = notFound[i];
476
+ if (found.indexOf(element) > -1)
477
+ notFound.pop();
478
+ }
479
+ _b = 0, notFound_1 = notFound;
480
+ _e.label = 1;
481
+ case 1:
482
+ if (!(_b < notFound_1.length)) return [3 /*break*/, 4];
483
+ element = notFound_1[_b];
484
+ _d = (_c = tags).push;
485
+ return [4 /*yield*/, this.getTagForElement(element, create)];
486
+ case 2:
487
+ _d.apply(_c, [_e.sent()]);
488
+ _e.label = 3;
489
+ case 3:
490
+ _b++;
491
+ return [3 /*break*/, 1];
492
+ case 4: return [2 /*return*/, tags];
493
+ }
494
+ });
495
+ });
496
+ };
497
+ DOM.prototype.getTagForElement = function (element, create) {
498
+ if (create === void 0) { create = false; }
499
+ return __awaiter(this, void 0, void 0, function () {
500
+ var _i, _a, tag;
501
+ return __generator(this, function (_b) {
502
+ switch (_b.label) {
503
+ case 0:
504
+ for (_i = 0, _a = this.tags; _i < _a.length; _i++) {
505
+ tag = _a[_i];
506
+ if (tag.element === element)
507
+ return [2 /*return*/, tag];
508
+ }
509
+ if (!(element && create)) return [3 /*break*/, 3];
510
+ if (element instanceof HTMLElement)
511
+ element.setAttribute('vsn-ref', '');
512
+ return [4 /*yield*/, this.buildFrom(element.parentElement || element)];
513
+ case 1:
514
+ _b.sent();
515
+ return [4 /*yield*/, this.getTagForElement(element, false)];
516
+ case 2: return [2 /*return*/, _b.sent()];
517
+ case 3: return [2 /*return*/, null];
518
+ }
519
+ });
520
+ });
521
+ };
522
+ DOM.prototype.getTagForScope = function (scope) {
523
+ return __awaiter(this, void 0, void 0, function () {
524
+ var _i, _a, tag;
525
+ return __generator(this, function (_b) {
526
+ for (_i = 0, _a = this.tags; _i < _a.length; _i++) {
527
+ tag = _a[_i];
528
+ if (tag.scope === scope)
529
+ return [2 /*return*/, tag];
530
+ }
531
+ return [2 /*return*/, null];
532
+ });
533
+ });
534
+ };
535
+ Object.defineProperty(DOM, "instance", {
536
+ get: function () {
537
+ if (!DOM._instance)
538
+ DOM._instance = new DOM(document, false, false);
539
+ return DOM._instance;
540
+ },
541
+ enumerable: false,
542
+ configurable: true
543
+ });
544
+ return DOM;
545
+ }(EventDispatcher_1.EventDispatcher));
546
+ exports.DOM = DOM;
547
+ //# sourceMappingURL=DOM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DOM.js","sourceRoot":"","sources":["../src/DOM.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface EventCallbackList {
2
+ [index: string]: EventCallback[];
3
+ }
4
+ export declare class EventCallback {
5
+ readonly fnc: any;
6
+ readonly key: number;
7
+ readonly once: boolean;
8
+ readonly context?: any;
9
+ calls: number;
10
+ constructor(fnc: any, key: number, once: boolean, context?: any);
11
+ call(...args: any[]): boolean;
12
+ }
13
+ export declare type EventDispatcherCallback = (...args: any[]) => any;
14
+ export declare class EventDispatcher {
15
+ private static sources;
16
+ private readonly _listeners;
17
+ private _lastKey;
18
+ constructor();
19
+ deconstructor(): void;
20
+ on(event: string, fct: EventDispatcherCallback, context?: any, once?: boolean): number;
21
+ once(event: string, fct: EventDispatcherCallback, context?: any): number;
22
+ off(event: string, key?: number): boolean;
23
+ offWithContext(event: string, context: any): number;
24
+ getListener(event: string, key: number): EventCallback | undefined;
25
+ dispatch(event: string, ...args: any[]): void;
26
+ }