Socket
Socket
Sign inDemoInstall

derby-templates

Package Overview
Dependencies
2
Maintainers
4
Versions
45
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.7.3 to 0.8.0

23

lib/contexts.js

@@ -6,5 +6,2 @@ exports.ContextMeta = ContextMeta;

// TODO:
// Implement removeItemContext
function ContextMeta() {

@@ -64,2 +61,3 @@ this.addBinding = noop;

this._id = null;
this._eventModels = null;
}

@@ -86,3 +84,20 @@

Context.prototype.removeNode = function(node) {
this.meta.removeNode(node);
var bindItemStart = node.$bindItemStart;
if (bindItemStart) {
this.meta.removeItemContext(bindItemStart.context);
}
var component = node.$component;
if (component) {
node.$component = null;
if (!component.singleton) {
component.destroy();
}
}
var destroyListeners = node.$destroyListeners;
if (destroyListeners) {
node.$destroyListeners = null;
for (var i = 0, len = destroyListeners.length; i < len; i++) {
destroyListeners[i]();
}
}
};

@@ -89,0 +104,0 @@

84

lib/templates.js

@@ -28,2 +28,3 @@ var saddle = require('saddle');

exports.AsProperty = AsProperty;
exports.AsPropertyComponent = AsPropertyComponent;
exports.AsObject = AsObject;

@@ -36,2 +37,5 @@ exports.AsObjectComponent = AsObjectComponent;

exports.elementAddDestroyListener = elementAddDestroyListener;
exports.elementRemoveDestroyListener = elementRemoveDestroyListener;
// Add ::isUnbound to Template && Binding

@@ -288,3 +292,3 @@ saddle.Template.prototype.isUnbound = function(context) {

this._parse();
if (this.componentFactory) {
if (this.componentFactory && !this.componentFactory.constructor.prototype.singleton) {
var marker = new Marker(this.name);

@@ -558,17 +562,11 @@ this.template.content.unshift(marker);

ElementOn.prototype.emit = function(context, element) {
var elementOn = this;
if (this.name === 'create') {
this.apply(context, element);
} else if (this.name === 'destroy') {
var destroyListeners = element.$destroyListeners || (element.$destroyListeners = []);
destroyListeners.push(function elementOnDestroy() {
elementOn.apply(context, element);
});
} else {
element.addEventListener(this.name, function elementOnListener(event) {
return elementOn.apply(context, element, event);
}, false);
return;
}
var elementOn = this;
var listener = function elementOnListener(event) {
return elementOn.apply(context, element, event);
};
context.controller.dom.on(this.name, element, listener, false);
};

@@ -617,4 +615,19 @@ ElementOn.prototype.apply = function(context, element, event) {

node[this.lastSegment] = target;
this.addListeners(target, node, this.lastSegment);
};
AsProperty.prototype.addListeners = function(target, object, key) {
this.addDestroyListener(target, function asPropertyDestroy() {
delete object[key];
});
};
AsProperty.prototype.addDestroyListener = elementAddDestroyListener;
function AsPropertyComponent(segments) {
AsProperty.call(this, segments);
}
AsPropertyComponent.prototype = Object.create(AsProperty.prototype);
AsPropertyComponent.prototype.constructor = AsPropertyComponent;
AsPropertyComponent.prototype.type = 'AsPropertyComponent';
AsPropertyComponent.prototype.addDestroyListener = componentAddDestroyListener;
function AsObject(segments, keyExpression) {

@@ -638,11 +651,2 @@ AsProperty.call(this, segments);

};
AsObject.prototype.addListeners = function(target, object, key) {
this.addDestroyListener(target, function asObjectDestroy() {
delete object[key];
});
};
AsObject.prototype.addDestroyListener = function(target, listener) {
var listeners = target.$destroyListeners || (target.$destroyListeners = []);
listeners.push(listener);
};

@@ -655,5 +659,3 @@ function AsObjectComponent(segments, keyExpression) {

AsObjectComponent.prototype.type = 'AsObjectComponent';
AsObjectComponent.prototype.addDestroyListener = function(target, listener) {
target.on('destroy', listener);
};
AsObjectComponent.prototype.addDestroyListener = componentAddDestroyListener;

@@ -691,4 +693,3 @@ function AsArray(segments) {

this.addDestroyListener(target, function asArrayDestroy() {
var index = array.indexOf(target);
if (index !== -1) array.splice(index, 1);
removeArrayItem(array, target);
});

@@ -699,3 +700,2 @@ };

};
AsArray.prototype.addDestroyListener = AsObject.prototype.addDestroyListener;

@@ -711,2 +711,28 @@ function AsArrayComponent(segments) {

};
AsArrayComponent.prototype.addDestroyListener = AsObjectComponent.prototype.addDestroyListener;
AsArrayComponent.prototype.addDestroyListener = componentAddDestroyListener;
function elementAddDestroyListener(element, listener) {
var destroyListeners = element.$destroyListeners;
if (destroyListeners) {
if (destroyListeners.indexOf(listener) === -1) {
destroyListeners.push(listener);
}
} else {
element.$destroyListeners = [listener];
}
}
function elementRemoveDestroyListener(element, listener) {
var destroyListeners = element.$destroyListeners;
if (destroyListeners) {
removeArrayItem(destroyListeners, listener);
}
}
function componentAddDestroyListener(target, listener) {
target.on('destroy', listener);
}
function removeArrayItem(array, item) {
var index = array.indexOf(item);
if (index > -1) {
array.splice(index, 1);
}
}
{
"name": "derby-templates",
"version": "0.7.3",
"version": "0.8.0",
"main": "index.js",

@@ -5,0 +5,0 @@ "scripts": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc