Comparing version 0.2.3 to 0.2.4
var is = require('../is'); | ||
function arrInvoker(arr) { | ||
return function() { arr[0](arr[1]); }; | ||
return function() { | ||
// Special case when length is two, for performance | ||
arr.length === 2 ? arr[0](arr[1]) : arr[0].apply(undefined, arr.splice(1)); | ||
}; | ||
} | ||
function fnInvoker(arr) { | ||
return function(ev) { arr[0](ev); }; | ||
function fnInvoker(o) { | ||
return function(ev) { o.fn(ev); }; | ||
} | ||
@@ -22,12 +25,13 @@ | ||
} else { | ||
cur = [cur]; | ||
cur = {fn: cur}; | ||
on[name] = cur; | ||
elm.addEventListener(name, fnInvoker(cur)); | ||
} | ||
} else if (old.length === 2) { | ||
old[0] = cur[0]; // Deliberately modify old array since it's | ||
old[1] = cur[1]; // captured in closure created with `arrInvoker` | ||
} else if (is.array(old)) { | ||
// Deliberately modify old array since it's captured in closure created with `arrInvoker` | ||
old.length = cur.length; | ||
for (var i = 0; i < old.length; ++i) old[i] = cur[i]; | ||
on[name] = old; | ||
} else { | ||
old[0] = cur; | ||
old.fn = cur; | ||
on[name] = old; | ||
@@ -34,0 +38,0 @@ } |
{ | ||
"name": "snabbdom", | ||
"version": "0.2.3", | ||
"version": "0.2.4", | ||
"description": "A virtual DOM library with focus on simplicity, modularity, powerful features and performance.", | ||
@@ -5,0 +5,0 @@ "main": "snabbdom.js", |
@@ -419,59 +419,2 @@ var assert = require('assert'); | ||
}); | ||
describe('event handling', function() { | ||
it('attaches click event handler to element', function() { | ||
var result = []; | ||
function clicked(ev) { result.push(ev); } | ||
var vnode = h('div', {on: {click: clicked}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
patch(vnode0, vnode); | ||
elm.click(); | ||
assert.equal(1, result.length); | ||
}); | ||
it('does not attach new listener', function() { | ||
var result = []; | ||
//function clicked(ev) { result.push(ev); } | ||
var vnode1 = h('div', {on: {click: function(ev) { result.push(1); }}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
var vnode2 = h('div', {on: {click: function(ev) { result.push(2); }}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
patch(vnode0, vnode1); | ||
elm.click(); | ||
patch(vnode1, vnode2); | ||
elm.click(); | ||
assert.deepEqual(result, [1, 2]); | ||
}); | ||
it('does calls handler for function in array', function() { | ||
var result = []; | ||
function clicked(ev) { result.push(ev); } | ||
var vnode = h('div', {on: {click: [clicked, 1]}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
patch(vnode0, vnode); | ||
elm.click(); | ||
assert.deepEqual(result, [1]); | ||
}); | ||
it('handles changed value in array', function() { | ||
var result = []; | ||
function clicked(ev) { result.push(ev); } | ||
var vnode1 = h('div', {on: {click: [clicked, 1]}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
var vnode2 = h('div', {on: {click: [clicked, 2]}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
var vnode3 = h('div', {on: {click: [clicked, 3]}}, [ | ||
h('a', 'Click my parent'), | ||
]); | ||
patch(vnode0, vnode1); | ||
elm.click(); | ||
patch(vnode1, vnode2); | ||
elm.click(); | ||
patch(vnode2, vnode3); | ||
elm.click(); | ||
assert.deepEqual(result, [1, 2, 3]); | ||
}); | ||
}); | ||
describe('hooks', function() { | ||
@@ -478,0 +421,0 @@ describe('element hooks', function() { |
require('./core'); | ||
require('./style'); | ||
require('./eventlisteners'); | ||
require('./attachto'); | ||
require('./thunk'); |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
482194
32
9863