vsn 0.1.98 → 0.1.101

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 (75) hide show
  1. package/demo/examples/component-slots.html +26 -0
  2. package/demo/vsn.js +2 -2
  3. package/dist/AST/ElementAttributeNode.js +5 -5
  4. package/dist/AST/ElementAttributeNode.js.map +1 -1
  5. package/dist/AST/ElementStyleNode.js +2 -2
  6. package/dist/AST/ElementStyleNode.js.map +1 -1
  7. package/dist/AST/ObjectNode.js +1 -1
  8. package/dist/AST/ObjectNode.js.map +1 -1
  9. package/dist/AST/ScopeMemberNode.js +2 -2
  10. package/dist/AST/ScopeMemberNode.js.map +1 -1
  11. package/dist/Component.d.ts +1 -0
  12. package/dist/Component.js +69 -24
  13. package/dist/Component.js.map +1 -1
  14. package/dist/DOM/DOMObject.d.ts +1 -0
  15. package/dist/DOM/DOMObject.js +7 -0
  16. package/dist/DOM/DOMObject.js.map +1 -1
  17. package/dist/DOM.d.ts +5 -4
  18. package/dist/DOM.js +114 -32
  19. package/dist/DOM.js.map +1 -1
  20. package/dist/Formats.js +4 -1
  21. package/dist/Formats.js.map +1 -1
  22. package/dist/Query.d.ts +1 -1
  23. package/dist/Query.js +2 -2
  24. package/dist/Query.js.map +1 -1
  25. package/dist/Scope.d.ts +1 -1
  26. package/dist/Scope.js +19 -1
  27. package/dist/Scope.js.map +1 -1
  28. package/dist/Tag/ShadowRootTag.d.ts +3 -0
  29. package/dist/Tag/ShadowRootTag.js +28 -0
  30. package/dist/Tag/ShadowRootTag.js.map +1 -0
  31. package/dist/Tag/SlotTag.d.ts +3 -0
  32. package/dist/Tag/SlotTag.js +28 -0
  33. package/dist/Tag/SlotTag.js.map +1 -0
  34. package/dist/Tag/SlottedTag.d.ts +7 -0
  35. package/dist/Tag/SlottedTag.js +87 -0
  36. package/dist/Tag/SlottedTag.js.map +1 -0
  37. package/dist/Tag/{List.d.ts → TagList.d.ts} +0 -0
  38. package/dist/Tag/{List.js → TagList.js} +1 -1
  39. package/dist/Tag/TagList.js.map +1 -0
  40. package/dist/Tag.d.ts +6 -2
  41. package/dist/Tag.js +36 -43
  42. package/dist/Tag.js.map +1 -1
  43. package/dist/attributes/List.js +20 -8
  44. package/dist/attributes/List.js.map +1 -1
  45. package/dist/attributes/ScopeAttribute.js +14 -12
  46. package/dist/attributes/ScopeAttribute.js.map +1 -1
  47. package/dist/version.d.ts +1 -1
  48. package/dist/version.js +1 -1
  49. package/dist/version.js.map +1 -1
  50. package/dist/vsn.js +8 -1
  51. package/dist/vsn.js.map +1 -1
  52. package/package.json +7 -2
  53. package/src/AST/ElementAttributeNode.ts +1 -1
  54. package/src/AST/ElementStyleNode.ts +1 -1
  55. package/src/AST/ObjectNode.ts +1 -1
  56. package/src/AST/ScopeMemberNode.ts +1 -1
  57. package/src/Component.ts +26 -9
  58. package/src/DOM/DOMObject.ts +4 -0
  59. package/src/DOM.ts +59 -7
  60. package/src/Formats.ts +4 -1
  61. package/src/Query.ts +1 -1
  62. package/src/Scope.ts +17 -1
  63. package/src/Tag/ShadowRootTag.ts +5 -0
  64. package/src/Tag/SlotTag.ts +5 -0
  65. package/src/Tag/SlottedTag.ts +19 -0
  66. package/src/Tag/{List.ts → TagList.ts} +0 -0
  67. package/src/Tag.ts +44 -45
  68. package/src/attributes/List.ts +24 -7
  69. package/src/attributes/ScopeAttribute.ts +12 -8
  70. package/src/version.ts +1 -1
  71. package/src/vsn.ts +7 -1
  72. package/test/AST/ClassNode.spec.ts +1 -1
  73. package/test/Tag/TagList.spec.ts +1 -1
  74. package/test/attributes/ListItem.spec.ts +2 -2
  75. package/dist/Tag/List.js.map +0 -1
@@ -64,6 +64,8 @@ var WrappedArray_1 = require("../Scope/WrappedArray");
64
64
  var ElementHelper_1 = require("../helpers/ElementHelper");
65
65
  var Registry_1 = require("../Registry");
66
66
  var DOM_1 = require("../DOM");
67
+ var Scope_1 = require("../Scope");
68
+ var ScopeData_1 = require("../Scope/ScopeData");
67
69
  var List = /** @class */ (function (_super) {
68
70
  __extends(List, _super);
69
71
  function List() {
@@ -252,7 +254,7 @@ var List = /** @class */ (function (_super) {
252
254
  };
253
255
  List.prototype.add = function (obj) {
254
256
  return __awaiter(this, void 0, void 0, function () {
255
- var clone, element, tag;
257
+ var clone, element, data, tag, itemScope;
256
258
  return __generator(this, function (_a) {
257
259
  switch (_a.label) {
258
260
  case 0:
@@ -264,6 +266,10 @@ var List = /** @class */ (function (_super) {
264
266
  element = clone;
265
267
  }
266
268
  delete element[Tag_1.Tag.TaggedVariable];
269
+ if (obj instanceof ScopeData_1.ScopeData)
270
+ data = obj.getData();
271
+ else
272
+ data = Object.assign({}, obj);
267
273
  return [4 /*yield*/, this.tag.dom.buildTag(element, true)];
268
274
  case 1:
269
275
  tag = _a.sent();
@@ -278,6 +284,10 @@ var List = /** @class */ (function (_super) {
278
284
  return [4 /*yield*/, this.tag.dom.buildFrom(this.tag.element)];
279
285
  case 4:
280
286
  _a.sent();
287
+ itemScope = tag.scope.get(this.listItemName);
288
+ if (itemScope instanceof Scope_1.Scope && data) {
289
+ itemScope.data.setData(data);
290
+ }
281
291
  this.tags.push(tag);
282
292
  this.tag.dispatch('add', obj);
283
293
  return [2 /*return*/];
@@ -287,13 +297,14 @@ var List = /** @class */ (function (_super) {
287
297
  };
288
298
  List.prototype.setupTagScope = function (tag, obj) {
289
299
  return __awaiter(this, void 0, void 0, function () {
290
- var modelName, cls;
300
+ var itemScope, modelName, cls;
291
301
  return __generator(this, function (_a) {
292
302
  switch (_a.label) {
293
303
  case 0:
294
304
  if (tag.meta[List_1.MetaItemSetupFlag])
295
305
  return [2 /*return*/];
296
306
  tag.createScope(true);
307
+ itemScope = new Scope_1.Scope(tag.scope);
297
308
  modelName = this.listItemModel;
298
309
  if (!modelName) return [3 /*break*/, 2];
299
310
  return [4 /*yield*/, Registry_1.Registry.instance.models.get(modelName)];
@@ -302,16 +313,17 @@ var List = /** @class */ (function (_super) {
302
313
  _a.label = 2;
303
314
  case 2:
304
315
  if (cls) {
305
- if (!obj || !(obj instanceof cls))
316
+ if (!obj || !(obj instanceof cls)) {
306
317
  obj = new cls(obj);
318
+ }
307
319
  }
308
320
  // Check if the class is set up already
309
- if (!cls || (!(tag.scope.data instanceof cls) && !(tag.scope.wrapped instanceof cls))) {
310
- if (tag.scope.wrapped)
311
- tag.scope.unwrap();
312
- tag.wrap(obj);
321
+ if (!cls || (!(itemScope.data instanceof cls) && !(itemScope.wrapped instanceof cls))) {
322
+ if (itemScope.wrapped)
323
+ itemScope.unwrap();
324
+ itemScope.wrap(obj, true, true);
313
325
  }
314
- tag.scope.set(this.listItemName, tag.scope);
326
+ tag.scope.set(this.listItemName, itemScope);
315
327
  tag.meta[List_1.MetaItemSetupFlag] = true;
316
328
  return [2 /*return*/];
317
329
  }
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/attributes/List.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../src/attributes/List.ts"],"names":[],"mappings":"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"}
@@ -90,27 +90,29 @@ var ScopeAttribute = /** @class */ (function (_super) {
90
90
  };
91
91
  ScopeAttribute.prototype.extract = function () {
92
92
  return __awaiter(this, void 0, void 0, function () {
93
- var value, _i, _a, key, binding;
93
+ var binding, scope, _i, _a, key;
94
94
  return __generator(this, function (_b) {
95
95
  switch (_b.label) {
96
96
  case 0:
97
97
  if (!this.tree) return [3 /*break*/, 2];
98
+ binding = this.getAttributeBinding();
98
99
  return [4 /*yield*/, this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag)];
99
100
  case 1:
100
- value = _b.sent();
101
- if (!(value instanceof Scope_1.Scope)) {
102
- throw new Error("vsn-scope value must be an object, got " + typeof value);
101
+ scope = _b.sent();
102
+ if (!(scope instanceof Scope_1.Scope)) {
103
+ throw new Error("vsn-scope value must be an object, got " + typeof scope);
104
+ }
105
+ if (binding) {
106
+ this.tag.scope.set(binding, scope);
103
107
  }
104
- for (_i = 0, _a = value.data.keys; _i < _a.length; _i++) {
105
- key = _a[_i];
106
- this.tag.scope.set(key, value.data[key]);
108
+ else {
109
+ for (_i = 0, _a = scope.data.keys; _i < _a.length; _i++) {
110
+ key = _a[_i];
111
+ this.tag.scope.set(key, scope.data[key]);
112
+ }
107
113
  }
108
114
  _b.label = 2;
109
- case 2:
110
- binding = this.getAttributeBinding();
111
- if (binding)
112
- this.tag.scope.parentScope.set(binding, this.tag.scope);
113
- return [4 /*yield*/, _super.prototype.extract.call(this)];
115
+ case 2: return [4 /*yield*/, _super.prototype.extract.call(this)];
114
116
  case 3:
115
117
  _b.sent();
116
118
  return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeAttribute.js","sourceRoot":"","sources":["../../src/attributes/ScopeAttribute.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuC;AACvC,wCAAqC;AACrC,8BAA4B;AAC5B,kCAA+B;AAG/B;IAAoC,kCAAS;IAA7C;;IA6BA,CAAC;IAxBgB,gCAAO,GAApB;;;;;;wBACU,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;6BAClC,IAAI,EAAJ,wBAAI;wBACJ,IAAI,CAAC,IAAI,GAAG,IAAI,UAAI,CAAC,IAAI,CAAC,CAAC;wBAC3B,qBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAA/D,SAA+D,CAAC;;4BAEpE,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IAEY,gCAAO,GAApB;;;;;;6BACQ,IAAI,CAAC,IAAI,EAAT,wBAAS;wBACK,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAAxE,KAAK,GAAG,SAAgE;wBAC9E,IAAI,CAAC,CAAC,KAAK,YAAY,aAAK,CAAC,EAAE;4BAC3B,MAAM,IAAI,KAAK,CAAC,4CAA0C,OAAO,KAAO,CAAC,CAAC;yBAC7E;wBACD,WAAiC,EAAf,KAAA,KAAK,CAAC,IAAI,CAAC,IAAI,EAAf,cAAe,EAAf,IAAe,EAAE;4BAAxB,GAAG;4BACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;yBAC5C;;;wBAEC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAC3C,IAAI,OAAO;4BACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC5D,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IA3BsB,uBAAQ,GAAY,KAAK,CAAC;IAC1B,qBAAM,GAAY,IAAI,CAAC;IAFrC,cAAc;QAD1B,mBAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;OACnB,cAAc,CA6B1B;IAAD,qBAAC;CAAA,AA7BD,CAAoC,qBAAS,GA6B5C;AA7BY,wCAAc"}
1
+ {"version":3,"file":"ScopeAttribute.js","sourceRoot":"","sources":["../../src/attributes/ScopeAttribute.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuC;AACvC,wCAAqC;AACrC,8BAA4B;AAC5B,kCAA+B;AAG/B;IAAoC,kCAAS;IAA7C;;IAiCA,CAAC;IA5BgB,gCAAO,GAApB;;;;;;wBACU,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;6BAClC,IAAI,EAAJ,wBAAI;wBACJ,IAAI,CAAC,IAAI,GAAG,IAAI,UAAI,CAAC,IAAI,CAAC,CAAC;wBAC3B,qBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAA/D,SAA+D,CAAC;;4BAEpE,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IAEY,gCAAO,GAApB;;;;;;6BACQ,IAAI,CAAC,IAAI,EAAT,wBAAS;wBACH,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBAE7B,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAAxE,KAAK,GAAG,SAAgE;wBAC9E,IAAI,CAAC,CAAC,KAAK,YAAY,aAAK,CAAC,EAAE;4BAC3B,MAAM,IAAI,KAAK,CAAC,4CAA0C,OAAO,KAAO,CAAC,CAAC;yBAC7E;wBAED,IAAI,OAAO,EAAE;4BACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;yBACtC;6BAAM;4BACH,WAAiC,EAAf,KAAA,KAAK,CAAC,IAAI,CAAC,IAAI,EAAf,cAAe,EAAf,IAAe,EAAE;gCAAxB,GAAG;gCACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;6BAC5C;yBACJ;;4BAEL,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IA/BsB,uBAAQ,GAAY,KAAK,CAAC;IAC1B,qBAAM,GAAY,IAAI,CAAC;IAFrC,cAAc;QAD1B,mBAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;OACnB,cAAc,CAiC1B;IAAD,qBAAC;CAAA,AAjCD,CAAoC,qBAAS,GAiC5C;AAjCY,wCAAc"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.98";
1
+ export declare const VERSION = "0.1.101";
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.1.98';
4
+ exports.VERSION = '0.1.101';
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,SAAS,CAAC"}
package/dist/vsn.js CHANGED
@@ -104,7 +104,14 @@ var Vision = /** @class */ (function (_super) {
104
104
  return _this;
105
105
  }
106
106
  Vision.prototype.defineComponent = function (name, cls) {
107
- customElements.define(name, cls);
107
+ if (this.dom.built) {
108
+ customElements.define(name, cls);
109
+ }
110
+ else {
111
+ this.dom.once('built', function () {
112
+ customElements.define(name, cls);
113
+ });
114
+ }
108
115
  };
109
116
  Object.defineProperty(Vision.prototype, "dom", {
110
117
  get: function () {
package/dist/vsn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vsn",
3
- "version": "0.1.98",
3
+ "version": "0.1.101",
4
4
  "description": "SEO Friendly Javascript/Typescript Framework",
5
5
  "keywords": [
6
6
  "framework",
@@ -9,7 +9,12 @@
9
9
  "ajax",
10
10
  "hateoas",
11
11
  "rest",
12
- "seo"
12
+ "seo",
13
+ "reactive",
14
+ "component",
15
+ "web component",
16
+ "web components",
17
+ "web component framework"
13
18
  ],
14
19
  "main": "./dist/vsn.js",
15
20
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  import {Scope} from "../Scope";
2
2
  import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
- import {TagList} from "../Tag/List";
4
+ import {TagList} from "../Tag/TagList";
5
5
  import {TreeNode} from "../AST";
6
6
  import {Node} from "./Node";
7
7
  import {ElementQueryNode} from "./ElementQueryNode";
@@ -1,7 +1,7 @@
1
1
  import {Scope} from "../Scope";
2
2
  import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
- import {TagList} from "../Tag/List";
4
+ import {TagList} from "../Tag/TagList";
5
5
  import {TreeNode} from "../AST";
6
6
  import {Node} from "./Node";
7
7
  import {ElementQueryNode} from "./ElementQueryNode";
@@ -21,7 +21,7 @@ export class ObjectNode extends Node implements TreeNode {
21
21
  for (let i = 0; i < this.values.length; i++) {
22
22
  const key = this.keys[i];
23
23
  const val = this.values[i];
24
- obj.set(await key.evaluate(scope, dom, tag), await val.evaluate(scope, dom, tag));
24
+ obj.set(await key.evaluate(scope, dom, tag), await val.evaluate(scope, dom, tag), true);
25
25
  }
26
26
  return obj;
27
27
  }
@@ -1,7 +1,7 @@
1
1
  import {Scope} from "../Scope";
2
2
  import {DOM} from "../DOM";
3
3
  import {Tag} from "../Tag";
4
- import {TagList} from "../Tag/List";
4
+ import {TagList} from "../Tag/TagList";
5
5
  import {DOMObject} from "../DOM/DOMObject";
6
6
  import {TreeNode} from "../AST";
7
7
  import {Node} from "./Node";
package/src/Component.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import {Registry} from "./Registry";
2
2
  import {DOM} from "./DOM";
3
+ import {SlotTag} from "./Tag/SlotTag";
4
+ import {SlottedTag} from "./Tag/SlottedTag";
3
5
 
4
6
  export class Component extends HTMLElement {
5
7
  protected readonly shadow: ShadowRoot;
@@ -18,17 +20,32 @@ export class Component extends HTMLElement {
18
20
  template = Registry.instance.templates.getSynchronous(this.tagName.toLowerCase());
19
21
  }
20
22
 
21
- this.setAttribute('vsn-ref', '');
22
-
23
+ this.setAttribute('vsn-scope', '');
23
24
  this.shadow.appendChild(template.content.cloneNode(true));
24
- this.shadow.querySelectorAll('slot').forEach(slot => {
25
- slot.addEventListener('slotchange', async (e) => {
26
- for (const child of slot.assignedNodes()) {
27
- const t = await DOM.instance.getTagForElement(child as HTMLElement, true, true);
28
- t?.slotted(slot);
29
- }
25
+ for (const child of Array.from(this.shadow.children)) {
26
+ child['shadowParent'] = this;
27
+ }
28
+ this.shadow.querySelectorAll('slot').forEach((slot) => {
29
+ const slotTagPromise = DOM.instance.buildTag(slot,false, SlotTag);
30
+ slot.addEventListener('slotchange', (e) => {
31
+ slotTagPromise.then(async (slotTag) => {
32
+ for (const child of slot.assignedNodes()) {
33
+ const t = await DOM.instance.buildTag<SlottedTag>(child as HTMLElement, false, SlottedTag);
34
+ await t?.slotted(slotTag);
35
+ }
36
+ await slotTag.buildAttributes();
37
+ });
30
38
  });
31
39
  });
32
- DOM.instance.buildFrom(this.shadow);
40
+ }
41
+
42
+ async connectedCallback() {
43
+ const tag = await DOM.instance.buildTag(this, true);
44
+ tag.createScope(true);
45
+ const componentTags = await DOM.instance.buildFrom(this.shadow);
46
+ await DOM.instance.resetBranch(tag);
47
+ for (const componentTag of componentTags) {
48
+ await DOM.instance.resetBranch(componentTag);
49
+ }
33
50
  }
34
51
  }
@@ -31,6 +31,10 @@ export abstract class DOMObject extends EventDispatcher {
31
31
  return this.element instanceof HTMLSlotElement;
32
32
  }
33
33
 
34
+ public get isSlotted(): boolean {
35
+ return this.element.hasAttribute('slot');
36
+ }
37
+
34
38
  public get scope(): Scope {
35
39
  if (!!this._scope)
36
40
  return this._scope;
package/src/DOM.ts CHANGED
@@ -2,13 +2,15 @@ import {Tag} from "./Tag";
2
2
  import {ElementHelper} from "./helpers/ElementHelper";
3
3
  import {Configuration} from "./Configuration";
4
4
  import {Tree} from "./AST";
5
- import {TagList} from "./Tag/List";
5
+ import {TagList} from "./Tag/TagList";
6
6
  import {WrappedWindow} from "./DOM/WrappedWindow";
7
7
  import {WrappedDocument} from "./DOM/WrappedDocument";
8
8
  import {Scope} from "./Scope";
9
9
  import {EventDispatcher} from "./EventDispatcher";
10
10
  import {ClassNode} from "./AST/ClassNode";
11
11
  import {Registry} from "./Registry";
12
+ import {SlotTag} from "./Tag/SlotTag";
13
+ import {SlottedTag} from "./Tag/SlottedTag";
12
14
 
13
15
  export enum EQuerySelectDirection {
14
16
  ALL,
@@ -27,7 +29,6 @@ export class DOM extends EventDispatcher {
27
29
  protected window: WrappedWindow;
28
30
  protected document: WrappedDocument;
29
31
  protected _built: boolean = false;
30
- public selected: Tag;
31
32
 
32
33
  constructor(
33
34
  protected rootElement: Document,
@@ -192,6 +193,10 @@ export class DOM extends EventDispatcher {
192
193
  async discover(ele: HTMLElement, forComponent: boolean = false): Promise<HTMLElement[]> {
193
194
  const discovered: HTMLElement[] = [];
194
195
  const checkElement = (e: HTMLElement): boolean => {
196
+ if (Registry.instance.components.has(e?.tagName?.toLowerCase())) {
197
+ return false;
198
+ }
199
+
195
200
  if (ElementHelper.hasVisionAttribute(e)) {
196
201
  if (
197
202
  (!forComponent && e.hasAttribute('slot'))
@@ -216,10 +221,15 @@ export class DOM extends EventDispatcher {
216
221
  return discovered;
217
222
  }
218
223
 
219
- async buildTag(element: HTMLElement, returnExisting: boolean = false): Promise<Tag> {
224
+ async buildTag<T = Tag>(element: HTMLElement, returnExisting: boolean = false, cls: any = Tag): Promise<T> {
220
225
  if (element[Tag.TaggedVariable]) return returnExisting ? element[Tag.TaggedVariable] : null;
221
- const tag: Tag = new Tag(element, this);
222
- this.tags.push(tag);
226
+ if (element.tagName.toLowerCase() === 'slot')
227
+ cls = SlotTag;
228
+ else if (element.hasAttribute('slot'))
229
+ cls = SlottedTag;
230
+
231
+ const tag: T = new cls(element, this);
232
+ this.tags.push(tag as any);
223
233
  return tag;
224
234
  }
225
235
 
@@ -255,12 +265,26 @@ export class DOM extends EventDispatcher {
255
265
  }
256
266
  }
257
267
 
258
- async buildFrom(ele: any, isRoot: boolean = false, forComponent: boolean = false) {
268
+ async buildFrom(ele: any, isRoot: boolean = false, forComponent: boolean = false): Promise<Tag[]> {
259
269
  if (isRoot) {
260
270
  document.body.setAttribute('vsn-root', '');
261
271
  document.ondragover = (e) => e.cancelable && e.preventDefault(); // Allow dragging over document
262
272
  }
263
273
 
274
+ // Setup components first
275
+ const templateNodes = this.querySelectorElement(ele, 'template');
276
+ const components: Tag[] = [];
277
+ for (const n of Array.from(templateNodes) as HTMLElement[]) {
278
+ if (!ElementHelper.hasVisionAttribute(n))
279
+ continue;
280
+
281
+ const tag = await this.buildTag(n);
282
+ if (tag)
283
+ components.push(tag);
284
+ }
285
+ if (components.length)
286
+ await this.setupTags(components);
287
+
264
288
  // Create tags for each html element with a vsn-attribute
265
289
  const newTags: Tag[] = [];
266
290
  const toBuild: HTMLElement[] = await this.discover(ele, forComponent);
@@ -270,7 +294,6 @@ export class DOM extends EventDispatcher {
270
294
  if (tag)
271
295
  newTags.push(tag);
272
296
  }
273
-
274
297
  if (isRoot)
275
298
  this._root = await this.getTagForElement(document.body);
276
299
 
@@ -281,6 +304,7 @@ export class DOM extends EventDispatcher {
281
304
  this.dispatch('builtRoot')
282
305
  }
283
306
  this.dispatch('built', newTags);
307
+ return newTags;
284
308
  }
285
309
 
286
310
  async getTagsForElements(elements: Element[], create: boolean = false) {
@@ -334,10 +358,38 @@ export class DOM extends EventDispatcher {
334
358
  return null;
335
359
  }
336
360
 
361
+ public async resetBranch(e: Tag | HTMLElement) {
362
+ if (e instanceof Tag)
363
+ e = e.element;
364
+ const tag = e[Tag.TaggedVariable];
365
+ if (tag)
366
+ tag.parentTag = null;
367
+
368
+ const children = Array.from(e.children) as HTMLElement[]
369
+ for (const t of children) {
370
+ await this.resetBranch(t);
371
+ }
372
+
373
+ if (tag && tag.uniqueScope && tag.parentTag) {
374
+ tag.scope.parentScope = tag.parentTag.scope;
375
+ }
376
+ }
377
+
337
378
  public static get instance(): DOM {
338
379
  if (!DOM._instance)
339
380
  DOM._instance = new DOM(document ,false, false);
340
381
 
341
382
  return DOM._instance;
342
383
  }
384
+
385
+ public static getParentElement(element: HTMLElement): HTMLElement {
386
+ if (element.parentElement) {
387
+ return element.parentElement as HTMLElement;
388
+ } else if (element.assignedSlot) {
389
+ return element.assignedSlot.parentElement as HTMLElement;
390
+ } else if (element['shadowParent']) {
391
+ return element['shadowParent'];
392
+ }
393
+ return null;
394
+ }
343
395
  }
package/src/Formats.ts CHANGED
@@ -20,7 +20,10 @@ export class Formats {
20
20
  setup();
21
21
  }
22
22
  value = `${value}`.replace(/[^0-9.]+/, '');
23
- return Formats.CurrencyFormatter.format(parseFloat(value));
23
+ value = parseFloat(value);
24
+ if (isNaN(value))
25
+ return '';
26
+ return Formats.CurrencyFormatter.format(value);
24
27
  }
25
28
 
26
29
  @Registry.format('date')
package/src/Query.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {TagList} from "./Tag/List";
1
+ import {TagList} from "./Tag/TagList";
2
2
  import {VisionHelper} from "./helpers/VisionHelper";
3
3
  import {DOM} from "./DOM";
4
4
  import {WrappedWindow} from "./DOM/WrappedWindow";
package/src/Scope.ts CHANGED
@@ -32,6 +32,9 @@ export class Scope extends EventDispatcher {
32
32
  }
33
33
 
34
34
  public set parentScope(scope: Scope) {
35
+ if (this._parentScope && this._parentScope !== scope)
36
+ this._parentScope.removeChild(this);
37
+
35
38
  if (scope) {
36
39
  this._parentScope = scope;
37
40
  scope.addChild(this);
@@ -94,7 +97,20 @@ export class Scope extends EventDispatcher {
94
97
  return value;
95
98
  }
96
99
 
97
- set(key: string, value: any) {
100
+ set(key: string, value: any, detectType: boolean = false): void {
101
+ if (detectType) {
102
+ const type = typeof value;
103
+ if (type === 'number') {
104
+ if (value % 1 === 0)
105
+ this.setType(key, 'integer');
106
+ else
107
+ this.setType(key, 'float');
108
+ } else if (type === 'string') {
109
+ this.setType(key, 'string');
110
+ } else if (type === 'boolean') {
111
+ this.setType(key, 'boolean');
112
+ }
113
+ }
98
114
  if (!this._data.hasProperty(key))
99
115
  this._data.createProperty(key);
100
116
  this._data[key] = value;
@@ -0,0 +1,5 @@
1
+ import {Tag} from "../Tag";
2
+
3
+ export class ShadowRootTag extends Tag {
4
+
5
+ }
@@ -0,0 +1,5 @@
1
+ import {Tag} from "../Tag";
2
+
3
+
4
+ export class SlotTag extends Tag {
5
+ }
@@ -0,0 +1,19 @@
1
+ import {Tag} from "../Tag";
2
+ import {SlotTag} from "./SlotTag";
3
+
4
+ export class SlottedTag extends Tag {
5
+ protected slotTag: SlotTag;
6
+
7
+ public async slotted(slot: SlotTag) {
8
+ this.slotTag = slot;
9
+ this.slot = slot.element as HTMLSlotElement;
10
+ this.parentTag = slot;
11
+ await this.dom.setupTags([this]);
12
+ await this.dom.buildFrom(this.element, false, true);
13
+ }
14
+
15
+ findParentTag(): Tag {
16
+ this.parentTag = this.slotTag;
17
+ return this._parentTag;
18
+ }
19
+ }
File without changes