vsn 0.1.132 → 0.1.134
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/cascading-function-sheets.html +2 -11
- package/demo/memory-leak-test.html +23 -0
- package/demo/resources/xhr-memory-leak-test.html +587 -0
- package/demo/vsn.js +2 -2
- package/dist/AST/ClassNode.js +23 -36
- package/dist/AST/ClassNode.js.map +1 -1
- package/dist/AST.js +1 -1
- package/dist/AST.js.map +1 -1
- package/dist/Attribute.d.ts +1 -0
- package/dist/Attribute.js +5 -0
- package/dist/Attribute.js.map +1 -1
- package/dist/DOM/AbstractDOM.d.ts +2 -1
- package/dist/DOM/AbstractDOM.js +6 -0
- package/dist/DOM/AbstractDOM.js.map +1 -1
- package/dist/DOM/DOMObject.d.ts +3 -0
- package/dist/DOM/DOMObject.js +8 -0
- package/dist/DOM/DOMObject.js.map +1 -1
- package/dist/EventDispatcher.d.ts +1 -0
- package/dist/EventDispatcher.js +81 -31
- package/dist/EventDispatcher.js.map +1 -1
- package/dist/Scope/ScopeDataAbstract.d.ts +1 -0
- package/dist/Scope/ScopeDataAbstract.js +45 -26
- package/dist/Scope/ScopeDataAbstract.js.map +1 -1
- package/dist/Scope/properties/Property.d.ts +1 -0
- package/dist/Scope/properties/Property.js +6 -0
- package/dist/Scope/properties/Property.js.map +1 -1
- package/dist/Scope.d.ts +1 -1
- package/dist/Scope.js +10 -4
- package/dist/Scope.js.map +1 -1
- package/dist/Tag.d.ts +1 -0
- package/dist/Tag.js +32 -35
- package/dist/Tag.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/AST/ClassNode.ts +7 -9
- package/src/AST.ts +1 -1
- package/src/Attribute.ts +6 -0
- package/src/DOM/AbstractDOM.ts +8 -1
- package/src/DOM/DOMObject.ts +10 -0
- package/src/EventDispatcher.ts +23 -1
- package/src/Scope/ScopeDataAbstract.ts +9 -0
- package/src/Scope/properties/Property.ts +7 -0
- package/src/Scope.ts +11 -5
- package/src/Tag.ts +20 -10
- package/src/version.ts +1 -1
- package/dist/demo.min.js +0 -3
- package/dist/demo.min.js.LICENSE.txt +0 -9
- package/dist/vsn.min.js +0 -3
- package/dist/vsn.min.js.LICENSE.txt +0 -9
package/src/Tag.ts
CHANGED
|
@@ -79,6 +79,7 @@ export class Tag extends DOMObject {
|
|
|
79
79
|
this.rawAttributes = {};
|
|
80
80
|
this.parsedAttributes = {};
|
|
81
81
|
this.onEventHandlers = {};
|
|
82
|
+
this.onEventBindings = {};
|
|
82
83
|
this.analyzeElementAttributes();
|
|
83
84
|
this._state = TagState.Instantiated;
|
|
84
85
|
}
|
|
@@ -257,10 +258,13 @@ export class Tag extends DOMObject {
|
|
|
257
258
|
|
|
258
259
|
public addChild(tag: Tag) {
|
|
259
260
|
this._children.push(tag);
|
|
261
|
+
tag.once('deconstruct', this.removeChild, this);
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
public removeChild(tag: Tag) {
|
|
263
|
-
this._children.
|
|
265
|
+
const index = this._children.indexOf(tag);
|
|
266
|
+
if (index > -1)
|
|
267
|
+
this._children.splice(index, 1);
|
|
264
268
|
}
|
|
265
269
|
|
|
266
270
|
public get children(): Tag[] {
|
|
@@ -700,7 +704,8 @@ export class Tag extends DOMObject {
|
|
|
700
704
|
if (eventType.indexOf('touch') > -1 || passiveValue !== null)
|
|
701
705
|
eventListenerOpts['passive'] = passiveValue === null && true || passiveValue;
|
|
702
706
|
|
|
703
|
-
|
|
707
|
+
|
|
708
|
+
element.addEventListener(eventType, this.getEventBinding(eventType), eventListenerOpts);
|
|
704
709
|
}
|
|
705
710
|
|
|
706
711
|
this.onEventHandlers[eventType].push({
|
|
@@ -712,6 +717,13 @@ export class Tag extends DOMObject {
|
|
|
712
717
|
});
|
|
713
718
|
}
|
|
714
719
|
|
|
720
|
+
public getEventBinding(eventType: string) {
|
|
721
|
+
if (this.onEventBindings[eventType] === undefined)
|
|
722
|
+
this.onEventBindings[eventType] = this.handleEvent.bind(this, eventType);
|
|
723
|
+
|
|
724
|
+
return this.onEventBindings[eventType];
|
|
725
|
+
}
|
|
726
|
+
|
|
715
727
|
public removeEventHandler(eventType: string, handler, context: any = null) {
|
|
716
728
|
if (!this.onEventHandlers[eventType])
|
|
717
729
|
return;
|
|
@@ -720,17 +732,16 @@ export class Tag extends DOMObject {
|
|
|
720
732
|
if (_handler) {
|
|
721
733
|
this.onEventHandlers[eventType].splice(this.onEventHandlers[eventType].indexOf(_handler), 1);
|
|
722
734
|
if (this.onEventHandlers[eventType].length === 0) {
|
|
723
|
-
this.element.removeEventListener(eventType, this.
|
|
735
|
+
this.element.removeEventListener(eventType, this.getEventBinding(eventType));
|
|
724
736
|
}
|
|
725
737
|
}
|
|
726
738
|
}
|
|
727
739
|
|
|
728
740
|
public removeAllEventHandlers() {
|
|
729
741
|
for (const eventType of Object.keys(this.onEventHandlers)) {
|
|
730
|
-
|
|
731
|
-
this.removeEventHandler(eventType, handler.handler, handler.context);
|
|
732
|
-
}
|
|
742
|
+
this.element.removeEventListener(eventType, this.getEventBinding(eventType));
|
|
733
743
|
}
|
|
744
|
+
this.onEventHandlers = {};
|
|
734
745
|
}
|
|
735
746
|
|
|
736
747
|
public removeContextEventHandlers(context: any) {
|
|
@@ -801,16 +812,15 @@ export class Tag extends DOMObject {
|
|
|
801
812
|
this.removeAllEventHandlers();
|
|
802
813
|
this.attributes.forEach(attr => attr.deconstruct());
|
|
803
814
|
this.attributes.clear();
|
|
815
|
+
this.deferredAttributes.length = 0;
|
|
804
816
|
this._children.forEach(child => child.deconstruct());
|
|
805
817
|
this._children.length = 0;
|
|
806
818
|
if (this._controller) {
|
|
807
819
|
this._controller.deconstruct();
|
|
808
820
|
this._controller = null;
|
|
809
821
|
}
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
(this as any).element = null;
|
|
813
|
-
}
|
|
822
|
+
this._parentTag = null;
|
|
823
|
+
(this as any).dom = null;
|
|
814
824
|
super.deconstruct();
|
|
815
825
|
}
|
|
816
826
|
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.1.
|
|
1
|
+
export const VERSION = '0.1.134';
|
|
2
2
|
|