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.
- package/demo/examples/component-slots.html +26 -0
- package/demo/vsn.js +2 -2
- package/dist/AST/ElementAttributeNode.js +5 -5
- package/dist/AST/ElementAttributeNode.js.map +1 -1
- package/dist/AST/ElementStyleNode.js +2 -2
- package/dist/AST/ElementStyleNode.js.map +1 -1
- package/dist/AST/ObjectNode.js +1 -1
- package/dist/AST/ObjectNode.js.map +1 -1
- package/dist/AST/ScopeMemberNode.js +2 -2
- package/dist/AST/ScopeMemberNode.js.map +1 -1
- package/dist/Component.d.ts +1 -0
- package/dist/Component.js +69 -24
- package/dist/Component.js.map +1 -1
- package/dist/DOM/DOMObject.d.ts +1 -0
- package/dist/DOM/DOMObject.js +7 -0
- package/dist/DOM/DOMObject.js.map +1 -1
- package/dist/DOM.d.ts +5 -4
- package/dist/DOM.js +114 -32
- package/dist/DOM.js.map +1 -1
- package/dist/Formats.js +4 -1
- package/dist/Formats.js.map +1 -1
- package/dist/Query.d.ts +1 -1
- package/dist/Query.js +2 -2
- package/dist/Query.js.map +1 -1
- package/dist/Scope.d.ts +1 -1
- package/dist/Scope.js +19 -1
- package/dist/Scope.js.map +1 -1
- package/dist/Tag/ShadowRootTag.d.ts +3 -0
- package/dist/Tag/ShadowRootTag.js +28 -0
- package/dist/Tag/ShadowRootTag.js.map +1 -0
- package/dist/Tag/SlotTag.d.ts +3 -0
- package/dist/Tag/SlotTag.js +28 -0
- package/dist/Tag/SlotTag.js.map +1 -0
- package/dist/Tag/SlottedTag.d.ts +7 -0
- package/dist/Tag/SlottedTag.js +87 -0
- package/dist/Tag/SlottedTag.js.map +1 -0
- package/dist/Tag/{List.d.ts → TagList.d.ts} +0 -0
- package/dist/Tag/{List.js → TagList.js} +1 -1
- package/dist/Tag/TagList.js.map +1 -0
- package/dist/Tag.d.ts +6 -2
- package/dist/Tag.js +36 -43
- package/dist/Tag.js.map +1 -1
- package/dist/attributes/List.js +20 -8
- package/dist/attributes/List.js.map +1 -1
- package/dist/attributes/ScopeAttribute.js +14 -12
- package/dist/attributes/ScopeAttribute.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/vsn.js +8 -1
- package/dist/vsn.js.map +1 -1
- package/package.json +7 -2
- package/src/AST/ElementAttributeNode.ts +1 -1
- package/src/AST/ElementStyleNode.ts +1 -1
- package/src/AST/ObjectNode.ts +1 -1
- package/src/AST/ScopeMemberNode.ts +1 -1
- package/src/Component.ts +26 -9
- package/src/DOM/DOMObject.ts +4 -0
- package/src/DOM.ts +59 -7
- package/src/Formats.ts +4 -1
- package/src/Query.ts +1 -1
- package/src/Scope.ts +17 -1
- package/src/Tag/ShadowRootTag.ts +5 -0
- package/src/Tag/SlotTag.ts +5 -0
- package/src/Tag/SlottedTag.ts +19 -0
- package/src/Tag/{List.ts → TagList.ts} +0 -0
- package/src/Tag.ts +44 -45
- package/src/attributes/List.ts +24 -7
- package/src/attributes/ScopeAttribute.ts +12 -8
- package/src/version.ts +1 -1
- package/src/vsn.ts +7 -1
- package/test/AST/ClassNode.spec.ts +1 -1
- package/test/Tag/TagList.spec.ts +1 -1
- package/test/attributes/ListItem.spec.ts +2 -2
- package/dist/Tag/List.js.map +0 -1
package/dist/attributes/List.js
CHANGED
|
@@ -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 || (!(
|
|
310
|
-
if (
|
|
311
|
-
|
|
312
|
-
|
|
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,
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAuC;AACvC,8BAA2B;AAC3B,sDAAmD;AACnD,0DAAuD;AACvD,wCAAqC;AACrC,8BAA2B;
|
|
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
|
|
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
|
-
|
|
101
|
-
if (!(
|
|
102
|
-
throw new Error("vsn-scope value must be an object, got " + typeof
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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;;
|
|
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.
|
|
1
|
+
export declare const VERSION = "0.1.101";
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA0B;AAC1B,qDAAkD;AAClD,uCAAoC;AACpC,iDAA8C;AAC9C,uDAAoD;AACpD,6BAA2B;AAC3B,iCAA8B;AAC9B,qDAAkD;AAClD,6DAA0D;AAE1D,qCAAkC;AAClC,6BAA2B;AAE3B;IAA4B,0BAAe;IAMvC;QAAA,YACI,iBAAO,SA0BV;QA9Be,cAAQ,GAAG,mBAAQ,CAAC,QAAQ,CAAC;QAC7B,YAAM,GAAkB,6BAAa,CAAC,QAAQ,CAAC;QAI3D,mBAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,CAAC;QACxE,IAAI,2BAAY,CAAC,QAAQ,EAAE;YACvB,QAAQ,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,CACxB,CAAC;SACL;aAAM;YACH,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAChD;QACD,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACrD,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,2BAAY,CAAC,CAAC;QACjE,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,mCAAgB,CAAC,CAAC;QAE7D,IAAI,2BAAY,CAAC,MAAM,EAAE;YACrB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAQ,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,KAAI,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAI,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,aAAK,CAAC;YACpB,2BAAY,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD;;IACL,CAAC;IAES,gCAAe,GAAzB,UAA0B,IAAI,EAAE,GAAG;QAC/B,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;
|
|
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.
|
|
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/
|
|
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/
|
|
4
|
+
import {TagList} from "../Tag/TagList";
|
|
5
5
|
import {TreeNode} from "../AST";
|
|
6
6
|
import {Node} from "./Node";
|
|
7
7
|
import {ElementQueryNode} from "./ElementQueryNode";
|
package/src/AST/ObjectNode.ts
CHANGED
|
@@ -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/
|
|
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-
|
|
22
|
-
|
|
23
|
+
this.setAttribute('vsn-scope', '');
|
|
23
24
|
this.shadow.appendChild(template.content.cloneNode(true));
|
|
24
|
-
this.shadow.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
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
|
}
|
package/src/DOM/DOMObject.ts
CHANGED
|
@@ -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/
|
|
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<
|
|
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
|
-
|
|
222
|
-
|
|
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
|
-
|
|
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
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,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
|