vsn 0.1.125 → 0.1.127

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 (69) hide show
  1. package/demo/demo.html +4 -8
  2. package/demo/examples/component-slots.html +16 -22
  3. package/demo/examples/loop.html +21 -0
  4. package/demo/resources/xhr-test-component.html +4 -0
  5. package/demo/vsn.js +2 -2
  6. package/dist/AST/ElementQueryNode.d.ts +2 -1
  7. package/dist/AST/ElementQueryNode.js +5 -5
  8. package/dist/AST/ElementQueryNode.js.map +1 -1
  9. package/dist/AST/FunctionNode.d.ts +1 -1
  10. package/dist/AST/LoopNode.d.ts +12 -0
  11. package/dist/AST/LoopNode.js +121 -0
  12. package/dist/AST/LoopNode.js.map +1 -0
  13. package/dist/AST/OnNode.d.ts +1 -1
  14. package/dist/AST/OnNode.js.map +1 -1
  15. package/dist/AST.d.ts +64 -62
  16. package/dist/AST.js +82 -69
  17. package/dist/AST.js.map +1 -1
  18. package/dist/Attribute.d.ts +1 -0
  19. package/dist/Attribute.js +6 -1
  20. package/dist/Attribute.js.map +1 -1
  21. package/dist/Component.d.ts +2 -0
  22. package/dist/Component.js +12 -27
  23. package/dist/Component.js.map +1 -1
  24. package/dist/DOM/AbstractDOM.d.ts +48 -0
  25. package/dist/DOM/AbstractDOM.js +937 -0
  26. package/dist/DOM/AbstractDOM.js.map +1 -0
  27. package/dist/DOM/ShadowDOM.d.ts +5 -0
  28. package/dist/DOM/ShadowDOM.js +32 -0
  29. package/dist/DOM/ShadowDOM.js.map +1 -0
  30. package/dist/DOM.d.ts +3 -48
  31. package/dist/DOM.js +6 -913
  32. package/dist/DOM.js.map +1 -1
  33. package/dist/Tag.d.ts +2 -0
  34. package/dist/Tag.js +119 -20
  35. package/dist/Tag.js.map +1 -1
  36. package/dist/helpers/VisionHelper.d.ts +1 -0
  37. package/dist/helpers/VisionHelper.js +45 -0
  38. package/dist/helpers/VisionHelper.js.map +1 -1
  39. package/dist/version.d.ts +1 -1
  40. package/dist/version.js +1 -1
  41. package/dist/vsn.js +2 -7
  42. package/dist/vsn.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/AST/ElementQueryNode.ts +2 -1
  45. package/src/AST/FunctionNode.ts +1 -1
  46. package/src/AST/LoopNode.ts +35 -0
  47. package/src/AST/OnNode.ts +2 -2
  48. package/src/AST.ts +19 -7
  49. package/src/Attribute.ts +3 -1
  50. package/src/Component.ts +15 -13
  51. package/src/DOM/AbstractDOM.ts +389 -0
  52. package/src/DOM/ShadowDOM.ts +15 -0
  53. package/src/DOM.ts +4 -385
  54. package/src/Tag.ts +31 -0
  55. package/src/helpers/VisionHelper.ts +6 -0
  56. package/src/version.ts +1 -1
  57. package/src/vsn.ts +2 -5
  58. package/test/AST/ClassNode.spec.ts +5 -5
  59. package/test/AST.spec.ts +21 -21
  60. package/test/Controller.spec.ts +1 -1
  61. package/test/DOM.spec.ts +3 -3
  62. package/test/Tag/TagList.spec.ts +1 -1
  63. package/test/attributes/Bind.spec.ts +12 -12
  64. package/test/attributes/JSONAttribute.spec.ts +5 -5
  65. package/test/attributes/ListItem.spec.ts +6 -6
  66. package/test/attributes/ScopeAttribute.spec.ts +2 -2
  67. package/test/attributes/ServiceAttribute.spec.ts +1 -1
  68. package/test/attributes/SetAttribute.spec.ts +3 -3
  69. package/test/attributes/Styles.spec.ts +2 -2
package/dist/DOM.js CHANGED
@@ -14,931 +14,24 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
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 __values = (this && this.__values) || function(o) {
54
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
- if (m) return m.call(o);
56
- if (o && typeof o.length === "number") return {
57
- next: function () {
58
- if (o && i >= o.length) o = void 0;
59
- return { value: o && o[i++], done: !o };
60
- }
61
- };
62
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
- };
64
- var __read = (this && this.__read) || function (o, n) {
65
- var m = typeof Symbol === "function" && o[Symbol.iterator];
66
- if (!m) return o;
67
- var i = m.call(o), r, ar = [], e;
68
- try {
69
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
70
- }
71
- catch (error) { e = { error: error }; }
72
- finally {
73
- try {
74
- if (r && !r.done && (m = i["return"])) m.call(i);
75
- }
76
- finally { if (e) throw e.error; }
77
- }
78
- return ar;
79
- };
80
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
81
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
82
- to[j] = from[i];
83
- return to;
84
- };
85
17
  Object.defineProperty(exports, "__esModule", { value: true });
86
- exports.DOM = exports.EQuerySelectDirection = void 0;
87
- var Tag_1 = require("./Tag");
88
- var ElementHelper_1 = require("./helpers/ElementHelper");
89
- var Configuration_1 = require("./Configuration");
90
- var AST_1 = require("./AST");
91
- var TagList_1 = require("./Tag/TagList");
92
- var WrappedWindow_1 = require("./DOM/WrappedWindow");
93
- var WrappedDocument_1 = require("./DOM/WrappedDocument");
94
- var EventDispatcher_1 = require("./EventDispatcher");
95
- var ClassNode_1 = require("./AST/ClassNode");
96
- var Registry_1 = require("./Registry");
97
- var SlotTag_1 = require("./Tag/SlotTag");
98
- var SlottedTag_1 = require("./Tag/SlottedTag");
99
- var EQuerySelectDirection;
100
- (function (EQuerySelectDirection) {
101
- EQuerySelectDirection[EQuerySelectDirection["ALL"] = 0] = "ALL";
102
- EQuerySelectDirection[EQuerySelectDirection["UP"] = 1] = "UP";
103
- EQuerySelectDirection[EQuerySelectDirection["DOWN"] = 2] = "DOWN";
104
- })(EQuerySelectDirection = exports.EQuerySelectDirection || (exports.EQuerySelectDirection = {}));
18
+ exports.DOM = void 0;
19
+ var AbstractDOM_1 = require("./DOM/AbstractDOM");
105
20
  var DOM = /** @class */ (function (_super) {
106
21
  __extends(DOM, _super);
107
- function DOM(rootElement, build, debug) {
108
- if (build === void 0) { build = true; }
109
- if (debug === void 0) { debug = false; }
110
- var _this = _super.call(this) || this;
111
- _this.rootElement = rootElement;
112
- _this.debug = debug;
113
- _this.queued = [];
114
- _this._built = false;
115
- _this._ready = new Promise(function (resolve) {
116
- _this.once('built', function () {
117
- resolve(true);
118
- });
119
- });
120
- _this.observer = new MutationObserver(_this.mutation.bind(_this));
121
- _this.tags = [];
122
- _this.window = new WrappedWindow_1.WrappedWindow(window);
123
- _this.document = new WrappedDocument_1.WrappedDocument(window.document);
124
- if (build) {
125
- _this.buildFrom(rootElement, true);
126
- }
127
- _this.evaluate();
128
- Configuration_1.Configuration.instance.on('change', _this.evaluate.bind(_this));
129
- return _this;
22
+ function DOM() {
23
+ return _super !== null && _super.apply(this, arguments) || this;
130
24
  }
131
- Object.defineProperty(DOM.prototype, "built", {
132
- get: function () {
133
- return this._built;
134
- },
135
- enumerable: false,
136
- configurable: true
137
- });
138
- Object.defineProperty(DOM.prototype, "root", {
139
- get: function () {
140
- return this._root;
141
- },
142
- enumerable: false,
143
- configurable: true
144
- });
145
- Object.defineProperty(DOM.prototype, "ready", {
146
- get: function () {
147
- return this.promise('builtRoot');
148
- },
149
- enumerable: false,
150
- configurable: true
151
- });
152
- DOM.prototype.get = function (selector, create, tag, direction) {
153
- if (create === void 0) { create = false; }
154
- if (tag === void 0) { tag = null; }
155
- if (direction === void 0) { direction = EQuerySelectDirection.DOWN; }
156
- return __awaiter(this, void 0, void 0, function () {
157
- var _a, nodes;
158
- return __generator(this, function (_b) {
159
- switch (_b.label) {
160
- case 0:
161
- _a = selector;
162
- switch (_a) {
163
- case 'window': return [3 /*break*/, 1];
164
- case 'document': return [3 /*break*/, 2];
165
- case 'body': return [3 /*break*/, 3];
166
- }
167
- return [3 /*break*/, 4];
168
- case 1: return [2 /*return*/, new TagList_1.TagList(this.window)];
169
- case 2: return [2 /*return*/, new TagList_1.TagList(this.document)];
170
- case 3: return [2 /*return*/, new TagList_1.TagList(this.root)];
171
- case 4:
172
- nodes = void 0;
173
- if (direction === EQuerySelectDirection.DOWN) {
174
- nodes = this.querySelectorAll(selector, tag);
175
- }
176
- else if (direction === EQuerySelectDirection.UP) {
177
- nodes = [this.querySelectorClosest(selector, tag)];
178
- }
179
- else {
180
- nodes = this.querySelectorAll(selector);
181
- }
182
- return [4 /*yield*/, this.getTagsForElements(Array.from(nodes), create)];
183
- case 5: return [2 /*return*/, _b.sent()];
184
- }
185
- });
186
- });
187
- };
188
- DOM.prototype.getFromTag = function (tag, selector, create) {
189
- if (create === void 0) { create = false; }
190
- return __awaiter(this, void 0, void 0, function () {
191
- var nodes;
192
- return __generator(this, function (_a) {
193
- switch (_a.label) {
194
- case 0:
195
- nodes = this.querySelectorElement(tag.element, selector);
196
- return [4 /*yield*/, this.getTagsForElements(Array.from(nodes), create)];
197
- case 1: return [2 /*return*/, _a.sent()];
198
- }
199
- });
200
- });
201
- };
202
- DOM.prototype.registerElementInRoot = function (tag) {
203
- var id = tag.element.getAttribute('id');
204
- if (!!id)
205
- this.root.scope.set("#" + id, tag.scope);
206
- };
207
- DOM.prototype.querySelectorClosest = function (q, tag) {
208
- if (tag === void 0) { tag = null; }
209
- return tag.element.closest(q);
210
- };
211
- DOM.prototype.querySelectPath = function (path, element) {
212
- var e_1, _a;
213
- if (element === void 0) { element = null; }
214
- var current = path.shift();
215
- if (!current)
216
- return [];
217
- var elements = Array.from(element ? this.querySelectorElement(element, current) : this.querySelectorAll(current));
218
- if (path.length > 0) {
219
- var result = [];
220
- try {
221
- for (var elements_1 = __values(elements), elements_1_1 = elements_1.next(); !elements_1_1.done; elements_1_1 = elements_1.next()) {
222
- var _element = elements_1_1.value;
223
- result.push.apply(result, __spreadArray([], __read(this.querySelectPath(__spreadArray([], __read(path)), _element))));
224
- }
225
- }
226
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
227
- finally {
228
- try {
229
- if (elements_1_1 && !elements_1_1.done && (_a = elements_1.return)) _a.call(elements_1);
230
- }
231
- finally { if (e_1) throw e_1.error; }
232
- }
233
- return result;
234
- }
235
- return elements;
236
- };
237
- DOM.prototype.querySelectorAll = function (q, tag) {
238
- if (tag === void 0) { tag = null; }
239
- var element = tag && !q.startsWith('#') ? tag.element : this.rootElement;
240
- return this.querySelectorElement(element, q);
241
- };
242
- DOM.prototype.querySelectorElement = function (element, q) {
243
- var e_2, _a;
244
- var parentIndex = q.indexOf(':parent');
245
- if (parentIndex > -1) {
246
- var _q = q.substring(0, parentIndex);
247
- var rest = q.substring(parentIndex + 7);
248
- if (_q.length > 0) {
249
- var nodeList = [];
250
- try {
251
- for (var _b = __values(Array.from(this.querySelectorElement(element, _q))), _c = _b.next(); !_c.done; _c = _b.next()) {
252
- var _element = _c.value;
253
- if (rest.length > 0) {
254
- nodeList.push.apply(nodeList, __spreadArray([], __read(Array.from(this.querySelectorElement(DOM.getParentElement(_element), rest)))));
255
- }
256
- else {
257
- nodeList.push(DOM.getParentElement(_element));
258
- }
259
- }
260
- }
261
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
262
- finally {
263
- try {
264
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
265
- }
266
- finally { if (e_2) throw e_2.error; }
267
- }
268
- return nodeList;
269
- }
270
- else if (rest.length === 0) {
271
- return [DOM.getParentElement(element)];
272
- }
273
- else {
274
- return this.querySelectorElement(DOM.getParentElement(element), rest);
275
- }
276
- }
277
- var matches = element.querySelectorAll(q);
278
- if (matches.length === 0 && element.shadowRoot) {
279
- matches = element.shadowRoot.querySelectorAll(q);
280
- }
281
- return matches;
282
- };
283
- DOM.prototype.querySelector = function (q) {
284
- return this.rootElement.querySelector(q);
285
- };
286
- DOM.prototype.exec = function (code) {
287
- return __awaiter(this, void 0, void 0, function () {
288
- var tree;
289
- return __generator(this, function (_a) {
290
- switch (_a.label) {
291
- case 0:
292
- tree = new AST_1.Tree(code);
293
- return [4 /*yield*/, tree.prepare(this.root.scope, this)];
294
- case 1:
295
- _a.sent();
296
- return [4 /*yield*/, tree.evaluate(this.root.scope, this)];
297
- case 2: return [2 /*return*/, _a.sent()];
298
- }
299
- });
300
- });
301
- };
302
- DOM.prototype.evaluate = function () {
303
- return __awaiter(this, void 0, void 0, function () {
304
- var _a, _b, tag, e_3_1;
305
- var e_3, _c;
306
- return __generator(this, function (_d) {
307
- switch (_d.label) {
308
- case 0:
309
- clearTimeout(this.evaluateTimeout);
310
- _d.label = 1;
311
- case 1:
312
- _d.trys.push([1, 6, 7, 8]);
313
- _a = __values(this.tags), _b = _a.next();
314
- _d.label = 2;
315
- case 2:
316
- if (!!_b.done) return [3 /*break*/, 5];
317
- tag = _b.value;
318
- return [4 /*yield*/, tag.evaluate()];
319
- case 3:
320
- _d.sent();
321
- _d.label = 4;
322
- case 4:
323
- _b = _a.next();
324
- return [3 /*break*/, 2];
325
- case 5: return [3 /*break*/, 8];
326
- case 6:
327
- e_3_1 = _d.sent();
328
- e_3 = { error: e_3_1 };
329
- return [3 /*break*/, 8];
330
- case 7:
331
- try {
332
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
333
- }
334
- finally { if (e_3) throw e_3.error; }
335
- return [7 /*endfinally*/];
336
- case 8: return [2 /*return*/];
337
- }
338
- });
339
- });
340
- };
341
- DOM.prototype.mutation = function (mutations) {
342
- return __awaiter(this, void 0, void 0, function () {
343
- var mutations_1, mutations_1_1, mutation, tag, _a, _b, ele, toRemove, e_4_1, e_5_1;
344
- var e_5, _c, e_4, _d;
345
- return __generator(this, function (_e) {
346
- switch (_e.label) {
347
- case 0:
348
- _e.trys.push([0, 13, 14, 15]);
349
- mutations_1 = __values(mutations), mutations_1_1 = mutations_1.next();
350
- _e.label = 1;
351
- case 1:
352
- if (!!mutations_1_1.done) return [3 /*break*/, 12];
353
- mutation = mutations_1_1.value;
354
- return [4 /*yield*/, this.getTagForElement(mutation.target)];
355
- case 2:
356
- tag = _e.sent();
357
- if (tag) {
358
- tag.mutate(mutation);
359
- }
360
- if (!(mutation.type === 'attributes' && mutation.attributeName === 'class')) return [3 /*break*/, 4];
361
- return [4 /*yield*/, ClassNode_1.ClassNode.checkForClassChanges(mutation.target, this, tag)];
362
- case 3:
363
- _e.sent();
364
- _e.label = 4;
365
- case 4:
366
- _e.trys.push([4, 9, 10, 11]);
367
- _a = (e_4 = void 0, __values(Array.from(mutation.removedNodes))), _b = _a.next();
368
- _e.label = 5;
369
- case 5:
370
- if (!!_b.done) return [3 /*break*/, 8];
371
- ele = _b.value;
372
- return [4 /*yield*/, this.getTagForElement(ele)];
373
- case 6:
374
- toRemove = _e.sent();
375
- if (toRemove) {
376
- toRemove.deconstruct();
377
- }
378
- _e.label = 7;
379
- case 7:
380
- _b = _a.next();
381
- return [3 /*break*/, 5];
382
- case 8: return [3 /*break*/, 11];
383
- case 9:
384
- e_4_1 = _e.sent();
385
- e_4 = { error: e_4_1 };
386
- return [3 /*break*/, 11];
387
- case 10:
388
- try {
389
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
390
- }
391
- finally { if (e_4) throw e_4.error; }
392
- return [7 /*endfinally*/];
393
- case 11:
394
- mutations_1_1 = mutations_1.next();
395
- return [3 /*break*/, 1];
396
- case 12: return [3 /*break*/, 15];
397
- case 13:
398
- e_5_1 = _e.sent();
399
- e_5 = { error: e_5_1 };
400
- return [3 /*break*/, 15];
401
- case 14:
402
- try {
403
- if (mutations_1_1 && !mutations_1_1.done && (_c = mutations_1.return)) _c.call(mutations_1);
404
- }
405
- finally { if (e_5) throw e_5.error; }
406
- return [7 /*endfinally*/];
407
- case 15: return [2 /*return*/];
408
- }
409
- });
410
- });
411
- };
412
- DOM.prototype.discover = function (ele, forComponent) {
413
- if (forComponent === void 0) { forComponent = false; }
414
- return __awaiter(this, void 0, void 0, function () {
415
- var discovered, checkElement, scanChildren;
416
- var _this = this;
417
- return __generator(this, function (_a) {
418
- discovered = [];
419
- checkElement = function (e) {
420
- var _a;
421
- if (Registry_1.Registry.instance.tags.has((_a = e === null || e === void 0 ? void 0 : e.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase())) {
422
- return false;
423
- }
424
- if (ElementHelper_1.ElementHelper.hasVisionAttribute(e)) {
425
- if ((!forComponent && e.hasAttribute('slot')))
426
- return false;
427
- if (_this.queued.indexOf(e) > -1)
428
- return false;
429
- _this.queued.push(e);
430
- discovered.push(e);
431
- }
432
- return true;
433
- };
434
- scanChildren = function (e) {
435
- var e_6, _a;
436
- try {
437
- for (var _b = __values(Array.from(e.children)), _c = _b.next(); !_c.done; _c = _b.next()) {
438
- var element = _c.value;
439
- if (!checkElement(element))
440
- continue;
441
- if (element.tagName.toLowerCase() !== 'template')
442
- scanChildren(element);
443
- }
444
- }
445
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
446
- finally {
447
- try {
448
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
449
- }
450
- finally { if (e_6) throw e_6.error; }
451
- }
452
- };
453
- checkElement(ele);
454
- scanChildren(ele);
455
- return [2 /*return*/, discovered];
456
- });
457
- });
458
- };
459
- DOM.prototype.buildTag = function (element, returnExisting, cls) {
460
- if (returnExisting === void 0) { returnExisting = false; }
461
- if (cls === void 0) { cls = Tag_1.Tag; }
462
- return __awaiter(this, void 0, void 0, function () {
463
- var tag;
464
- return __generator(this, function (_a) {
465
- if (element[Tag_1.Tag.TaggedVariable])
466
- return [2 /*return*/, returnExisting ? element[Tag_1.Tag.TaggedVariable] : null];
467
- if (element.tagName.toLowerCase() === 'slot')
468
- cls = SlotTag_1.SlotTag;
469
- else if (element.hasAttribute('slot'))
470
- cls = SlottedTag_1.SlottedTag;
471
- tag = new cls(element, this);
472
- this.tags.push(tag);
473
- return [2 /*return*/, tag];
474
- });
475
- });
476
- };
477
- DOM.prototype.setupTags = function (tags) {
478
- return __awaiter(this, void 0, void 0, function () {
479
- var tags_1, tags_1_1, tag, e_7_1, tags_2, tags_2_1, tag, e_8_1, tags_3, tags_3_1, tag, e_9_1, tags_4, tags_4_1, tag, e_10_1, tags_5, tags_5_1, tag, e_11_1, tags_6, tags_6_1, tag, e_12_1, tags_7, tags_7_1, tag;
480
- var e_7, _a, e_8, _b, e_9, _c, e_10, _d, e_11, _e, e_12, _f, e_13, _g;
481
- return __generator(this, function (_h) {
482
- switch (_h.label) {
483
- case 0:
484
- _h.trys.push([0, 5, 6, 7]);
485
- tags_1 = __values(tags), tags_1_1 = tags_1.next();
486
- _h.label = 1;
487
- case 1:
488
- if (!!tags_1_1.done) return [3 /*break*/, 4];
489
- tag = tags_1_1.value;
490
- return [4 /*yield*/, tag.buildAttributes()];
491
- case 2:
492
- _h.sent();
493
- _h.label = 3;
494
- case 3:
495
- tags_1_1 = tags_1.next();
496
- return [3 /*break*/, 1];
497
- case 4: return [3 /*break*/, 7];
498
- case 5:
499
- e_7_1 = _h.sent();
500
- e_7 = { error: e_7_1 };
501
- return [3 /*break*/, 7];
502
- case 6:
503
- try {
504
- if (tags_1_1 && !tags_1_1.done && (_a = tags_1.return)) _a.call(tags_1);
505
- }
506
- finally { if (e_7) throw e_7.error; }
507
- return [7 /*endfinally*/];
508
- case 7:
509
- _h.trys.push([7, 12, 13, 14]);
510
- tags_2 = __values(tags), tags_2_1 = tags_2.next();
511
- _h.label = 8;
512
- case 8:
513
- if (!!tags_2_1.done) return [3 /*break*/, 11];
514
- tag = tags_2_1.value;
515
- return [4 /*yield*/, tag.compileAttributes()];
516
- case 9:
517
- _h.sent();
518
- _h.label = 10;
519
- case 10:
520
- tags_2_1 = tags_2.next();
521
- return [3 /*break*/, 8];
522
- case 11: return [3 /*break*/, 14];
523
- case 12:
524
- e_8_1 = _h.sent();
525
- e_8 = { error: e_8_1 };
526
- return [3 /*break*/, 14];
527
- case 13:
528
- try {
529
- if (tags_2_1 && !tags_2_1.done && (_b = tags_2.return)) _b.call(tags_2);
530
- }
531
- finally { if (e_8) throw e_8.error; }
532
- return [7 /*endfinally*/];
533
- case 14:
534
- _h.trys.push([14, 19, 20, 21]);
535
- tags_3 = __values(tags), tags_3_1 = tags_3.next();
536
- _h.label = 15;
537
- case 15:
538
- if (!!tags_3_1.done) return [3 /*break*/, 18];
539
- tag = tags_3_1.value;
540
- return [4 /*yield*/, tag.setupAttributes()];
541
- case 16:
542
- _h.sent();
543
- _h.label = 17;
544
- case 17:
545
- tags_3_1 = tags_3.next();
546
- return [3 /*break*/, 15];
547
- case 18: return [3 /*break*/, 21];
548
- case 19:
549
- e_9_1 = _h.sent();
550
- e_9 = { error: e_9_1 };
551
- return [3 /*break*/, 21];
552
- case 20:
553
- try {
554
- if (tags_3_1 && !tags_3_1.done && (_c = tags_3.return)) _c.call(tags_3);
555
- }
556
- finally { if (e_9) throw e_9.error; }
557
- return [7 /*endfinally*/];
558
- case 21:
559
- _h.trys.push([21, 26, 27, 28]);
560
- tags_4 = __values(tags), tags_4_1 = tags_4.next();
561
- _h.label = 22;
562
- case 22:
563
- if (!!tags_4_1.done) return [3 /*break*/, 25];
564
- tag = tags_4_1.value;
565
- return [4 /*yield*/, tag.extractAttributes()];
566
- case 23:
567
- _h.sent();
568
- _h.label = 24;
569
- case 24:
570
- tags_4_1 = tags_4.next();
571
- return [3 /*break*/, 22];
572
- case 25: return [3 /*break*/, 28];
573
- case 26:
574
- e_10_1 = _h.sent();
575
- e_10 = { error: e_10_1 };
576
- return [3 /*break*/, 28];
577
- case 27:
578
- try {
579
- if (tags_4_1 && !tags_4_1.done && (_d = tags_4.return)) _d.call(tags_4);
580
- }
581
- finally { if (e_10) throw e_10.error; }
582
- return [7 /*endfinally*/];
583
- case 28:
584
- _h.trys.push([28, 33, 34, 35]);
585
- tags_5 = __values(tags), tags_5_1 = tags_5.next();
586
- _h.label = 29;
587
- case 29:
588
- if (!!tags_5_1.done) return [3 /*break*/, 32];
589
- tag = tags_5_1.value;
590
- return [4 /*yield*/, tag.connectAttributes()];
591
- case 30:
592
- _h.sent();
593
- _h.label = 31;
594
- case 31:
595
- tags_5_1 = tags_5.next();
596
- return [3 /*break*/, 29];
597
- case 32: return [3 /*break*/, 35];
598
- case 33:
599
- e_11_1 = _h.sent();
600
- e_11 = { error: e_11_1 };
601
- return [3 /*break*/, 35];
602
- case 34:
603
- try {
604
- if (tags_5_1 && !tags_5_1.done && (_e = tags_5.return)) _e.call(tags_5);
605
- }
606
- finally { if (e_11) throw e_11.error; }
607
- return [7 /*endfinally*/];
608
- case 35:
609
- _h.trys.push([35, 40, 41, 42]);
610
- tags_6 = __values(tags), tags_6_1 = tags_6.next();
611
- _h.label = 36;
612
- case 36:
613
- if (!!tags_6_1.done) return [3 /*break*/, 39];
614
- tag = tags_6_1.value;
615
- return [4 /*yield*/, tag.finalize()];
616
- case 37:
617
- _h.sent();
618
- this.queued.splice(this.queued.indexOf(tag.element), 1);
619
- _h.label = 38;
620
- case 38:
621
- tags_6_1 = tags_6.next();
622
- return [3 /*break*/, 36];
623
- case 39: return [3 /*break*/, 42];
624
- case 40:
625
- e_12_1 = _h.sent();
626
- e_12 = { error: e_12_1 };
627
- return [3 /*break*/, 42];
628
- case 41:
629
- try {
630
- if (tags_6_1 && !tags_6_1.done && (_f = tags_6.return)) _f.call(tags_6);
631
- }
632
- finally { if (e_12) throw e_12.error; }
633
- return [7 /*endfinally*/];
634
- case 42:
635
- try {
636
- for (tags_7 = __values(tags), tags_7_1 = tags_7.next(); !tags_7_1.done; tags_7_1 = tags_7.next()) {
637
- tag = tags_7_1.value;
638
- this.observer.observe(tag.element, {
639
- attributes: true,
640
- characterData: true,
641
- childList: true,
642
- subtree: true
643
- });
644
- }
645
- }
646
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
647
- finally {
648
- try {
649
- if (tags_7_1 && !tags_7_1.done && (_g = tags_7.return)) _g.call(tags_7);
650
- }
651
- finally { if (e_13) throw e_13.error; }
652
- }
653
- return [2 /*return*/];
654
- }
655
- });
656
- });
657
- };
658
- DOM.prototype.buildFrom = function (ele, isRoot, forComponent) {
659
- if (isRoot === void 0) { isRoot = false; }
660
- if (forComponent === void 0) { forComponent = false; }
661
- return __awaiter(this, void 0, void 0, function () {
662
- var _a, templateNodes, components, _b, _c, n, tag, e_14_1, newTags, toBuild, toBuild_1, toBuild_1_1, element, tag, e_15_1;
663
- var e_14, _d, e_15, _e;
664
- return __generator(this, function (_f) {
665
- switch (_f.label) {
666
- case 0:
667
- if (!isRoot) return [3 /*break*/, 3];
668
- document.body.setAttribute('vsn-root', '');
669
- document.ondragover = function (e) { return e.cancelable && e.preventDefault(); }; // Allow dragging over document
670
- _a = this;
671
- return [4 /*yield*/, this.buildTag(document.body, true)];
672
- case 1:
673
- _a._root = _f.sent();
674
- this._root.createScope(true);
675
- return [4 /*yield*/, this.setupTags([this._root])];
676
- case 2:
677
- _f.sent();
678
- _f.label = 3;
679
- case 3:
680
- templateNodes = this.querySelectorElement(ele, 'template');
681
- components = [];
682
- _f.label = 4;
683
- case 4:
684
- _f.trys.push([4, 9, 10, 11]);
685
- _b = __values(Array.from(templateNodes)), _c = _b.next();
686
- _f.label = 5;
687
- case 5:
688
- if (!!_c.done) return [3 /*break*/, 8];
689
- n = _c.value;
690
- if (!ElementHelper_1.ElementHelper.hasVisionAttribute(n))
691
- return [3 /*break*/, 7];
692
- return [4 /*yield*/, this.buildTag(n)];
693
- case 6:
694
- tag = _f.sent();
695
- if (tag)
696
- components.push(tag);
697
- _f.label = 7;
698
- case 7:
699
- _c = _b.next();
700
- return [3 /*break*/, 5];
701
- case 8: return [3 /*break*/, 11];
702
- case 9:
703
- e_14_1 = _f.sent();
704
- e_14 = { error: e_14_1 };
705
- return [3 /*break*/, 11];
706
- case 10:
707
- try {
708
- if (_c && !_c.done && (_d = _b.return)) _d.call(_b);
709
- }
710
- finally { if (e_14) throw e_14.error; }
711
- return [7 /*endfinally*/];
712
- case 11:
713
- if (!components.length) return [3 /*break*/, 13];
714
- return [4 /*yield*/, this.setupTags(components)];
715
- case 12:
716
- _f.sent();
717
- _f.label = 13;
718
- case 13:
719
- newTags = [];
720
- return [4 /*yield*/, this.discover(ele, forComponent)];
721
- case 14:
722
- toBuild = _f.sent();
723
- _f.label = 15;
724
- case 15:
725
- _f.trys.push([15, 20, 21, 22]);
726
- toBuild_1 = __values(toBuild), toBuild_1_1 = toBuild_1.next();
727
- _f.label = 16;
728
- case 16:
729
- if (!!toBuild_1_1.done) return [3 /*break*/, 19];
730
- element = toBuild_1_1.value;
731
- return [4 /*yield*/, this.buildTag(element)];
732
- case 17:
733
- tag = _f.sent();
734
- if (tag)
735
- newTags.push(tag);
736
- _f.label = 18;
737
- case 18:
738
- toBuild_1_1 = toBuild_1.next();
739
- return [3 /*break*/, 16];
740
- case 19: return [3 /*break*/, 22];
741
- case 20:
742
- e_15_1 = _f.sent();
743
- e_15 = { error: e_15_1 };
744
- return [3 /*break*/, 22];
745
- case 21:
746
- try {
747
- if (toBuild_1_1 && !toBuild_1_1.done && (_e = toBuild_1.return)) _e.call(toBuild_1);
748
- }
749
- finally { if (e_15) throw e_15.error; }
750
- return [7 /*endfinally*/];
751
- case 22: return [4 /*yield*/, this.setupTags(newTags)];
752
- case 23:
753
- _f.sent();
754
- if (isRoot) {
755
- this._built = true;
756
- this.dispatch('builtRoot');
757
- }
758
- this.dispatch('built', newTags);
759
- return [2 /*return*/, newTags];
760
- }
761
- });
762
- });
763
- };
764
- DOM.prototype.getTagsForElements = function (elements, create) {
765
- if (create === void 0) { create = false; }
766
- return __awaiter(this, void 0, void 0, function () {
767
- var tags, found, elements_2, elements_2_1, element, notFound, i, element, notFound_1, notFound_1_1, element, _a, _b, e_16_1;
768
- var e_17, _c, e_16, _d;
769
- return __generator(this, function (_e) {
770
- switch (_e.label) {
771
- case 0:
772
- tags = new TagList_1.TagList();
773
- found = [];
774
- try {
775
- for (elements_2 = __values(elements), elements_2_1 = elements_2.next(); !elements_2_1.done; elements_2_1 = elements_2.next()) {
776
- element = elements_2_1.value;
777
- if (element && element[Tag_1.Tag.TaggedVariable]) {
778
- tags.push(element[Tag_1.Tag.TaggedVariable]);
779
- found.push(element);
780
- }
781
- }
782
- }
783
- catch (e_17_1) { e_17 = { error: e_17_1 }; }
784
- finally {
785
- try {
786
- if (elements_2_1 && !elements_2_1.done && (_c = elements_2.return)) _c.call(elements_2);
787
- }
788
- finally { if (e_17) throw e_17.error; }
789
- }
790
- if (!create) return [3 /*break*/, 8];
791
- notFound = __spreadArray([], __read(elements));
792
- for (i = notFound.length; i >= 0; i--) {
793
- element = notFound[i];
794
- if (found.indexOf(element) > -1) {
795
- notFound.splice(i, 1);
796
- }
797
- }
798
- _e.label = 1;
799
- case 1:
800
- _e.trys.push([1, 6, 7, 8]);
801
- notFound_1 = __values(notFound), notFound_1_1 = notFound_1.next();
802
- _e.label = 2;
803
- case 2:
804
- if (!!notFound_1_1.done) return [3 /*break*/, 5];
805
- element = notFound_1_1.value;
806
- _b = (_a = tags).push;
807
- return [4 /*yield*/, this.getTagForElement(element, create)];
808
- case 3:
809
- _b.apply(_a, [_e.sent()]);
810
- _e.label = 4;
811
- case 4:
812
- notFound_1_1 = notFound_1.next();
813
- return [3 /*break*/, 2];
814
- case 5: return [3 /*break*/, 8];
815
- case 6:
816
- e_16_1 = _e.sent();
817
- e_16 = { error: e_16_1 };
818
- return [3 /*break*/, 8];
819
- case 7:
820
- try {
821
- if (notFound_1_1 && !notFound_1_1.done && (_d = notFound_1.return)) _d.call(notFound_1);
822
- }
823
- finally { if (e_16) throw e_16.error; }
824
- return [7 /*endfinally*/];
825
- case 8: return [2 /*return*/, tags];
826
- }
827
- });
828
- });
829
- };
830
- DOM.prototype.getTagForElement = function (element, create, forComponent) {
831
- if (create === void 0) { create = false; }
832
- if (forComponent === void 0) { forComponent = false; }
833
- return __awaiter(this, void 0, void 0, function () {
834
- return __generator(this, function (_a) {
835
- switch (_a.label) {
836
- case 0:
837
- if (element && element[Tag_1.Tag.TaggedVariable])
838
- return [2 /*return*/, element[Tag_1.Tag.TaggedVariable]];
839
- if (!(element && create)) return [3 /*break*/, 3];
840
- if (element instanceof HTMLElement)
841
- element.setAttribute('vsn-ref', '');
842
- return [4 /*yield*/, this.buildFrom(element.parentElement || element, false, forComponent)];
843
- case 1:
844
- _a.sent();
845
- return [4 /*yield*/, this.getTagForElement(element, false)];
846
- case 2: return [2 /*return*/, _a.sent()];
847
- case 3: return [2 /*return*/, null];
848
- }
849
- });
850
- });
851
- };
852
- DOM.prototype.getTagForScope = function (scope) {
853
- return __awaiter(this, void 0, void 0, function () {
854
- var _a, _b, tag;
855
- var e_18, _c;
856
- return __generator(this, function (_d) {
857
- try {
858
- for (_a = __values(this.tags), _b = _a.next(); !_b.done; _b = _a.next()) {
859
- tag = _b.value;
860
- if (tag.uniqueScope && tag.scope === scope)
861
- return [2 /*return*/, tag];
862
- }
863
- }
864
- catch (e_18_1) { e_18 = { error: e_18_1 }; }
865
- finally {
866
- try {
867
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
868
- }
869
- finally { if (e_18) throw e_18.error; }
870
- }
871
- return [2 /*return*/, null];
872
- });
873
- });
874
- };
875
- DOM.prototype.resetBranch = function (e) {
876
- return __awaiter(this, void 0, void 0, function () {
877
- var tag, children, children_1, children_1_1, t, e_19_1;
878
- var e_19, _a;
879
- return __generator(this, function (_b) {
880
- switch (_b.label) {
881
- case 0:
882
- if (e instanceof Tag_1.Tag)
883
- e = e.element;
884
- tag = e[Tag_1.Tag.TaggedVariable];
885
- if (tag) {
886
- tag.findParentTag();
887
- }
888
- children = Array.from(e.children);
889
- _b.label = 1;
890
- case 1:
891
- _b.trys.push([1, 6, 7, 8]);
892
- children_1 = __values(children), children_1_1 = children_1.next();
893
- _b.label = 2;
894
- case 2:
895
- if (!!children_1_1.done) return [3 /*break*/, 5];
896
- t = children_1_1.value;
897
- return [4 /*yield*/, this.resetBranch(t)];
898
- case 3:
899
- _b.sent();
900
- _b.label = 4;
901
- case 4:
902
- children_1_1 = children_1.next();
903
- return [3 /*break*/, 2];
904
- case 5: return [3 /*break*/, 8];
905
- case 6:
906
- e_19_1 = _b.sent();
907
- e_19 = { error: e_19_1 };
908
- return [3 /*break*/, 8];
909
- case 7:
910
- try {
911
- if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);
912
- }
913
- finally { if (e_19) throw e_19.error; }
914
- return [7 /*endfinally*/];
915
- case 8: return [2 /*return*/];
916
- }
917
- });
918
- });
919
- };
920
25
  Object.defineProperty(DOM, "instance", {
921
26
  get: function () {
922
27
  if (!DOM._instance)
923
- DOM._instance = new DOM(document, false, false);
28
+ DOM._instance = new DOM(document.body, false, false);
924
29
  return DOM._instance;
925
30
  },
926
31
  enumerable: false,
927
32
  configurable: true
928
33
  });
929
- DOM.getParentElement = function (element) {
930
- if (element.parentElement) {
931
- return element.parentElement;
932
- }
933
- else if (element.assignedSlot) {
934
- return element.assignedSlot.parentElement;
935
- }
936
- else if (element['shadowParent']) {
937
- return element['shadowParent'];
938
- }
939
- return null;
940
- };
941
34
  return DOM;
942
- }(EventDispatcher_1.EventDispatcher));
35
+ }(AbstractDOM_1.AbstractDOM));
943
36
  exports.DOM = DOM;
944
37
  //# sourceMappingURL=DOM.js.map