diff --git a/rollup.config.js b/rollup.config.js index 804bba8..6e80913 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -11,7 +11,7 @@ const config = { indent: false, extend: true, banner: `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`, - globals: Object.assign({}, ...Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"}))) + globals: Object.assign({}, ...Object.keys({...meta.dependencies, ...meta.peerDependencies}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"}))) }, plugins: [] }; diff --git a/src/selection/transition.js b/src/selection/transition.js index e12f649..b4fa94f 100644 --- a/src/selection/transition.js +++ b/src/selection/transition.js @@ -14,7 +14,7 @@ function inherit(node, id) { var timing; while (!(timing = node.__transition) || !(timing = timing[id])) { if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; + throw new Error(`transition ${id} not found`); } } return timing; diff --git a/test/selection/transition-test.js b/test/selection/transition-test.js index 4bd11d4..53b8693 100644 --- a/test/selection/transition-test.js +++ b/test/selection/transition-test.js @@ -129,3 +129,24 @@ tape("selection.transition(transition) reselects the existing transition with th test.equal(transition2.tween("tween"), bar); test.end(); }); + +tape("selection.transition(transition) throws an error if the specified transition is not found", function(test) { + var document = jsdom("

"), + one = document.querySelector("#one"), + two = document.querySelector("#two"), + transition1 = d3_selection.select(one).transition(), + transition2 = d3_selection.select(two).transition().delay(50); + try { + d3_selection.select(two).transition(transition1); + test.fail(); + } catch (error) { + test.deepEqual(error.message, `transition ${transition1._id} not found`); + } + try { + d3_selection.select(one).transition(transition2); + test.fail(); + } catch (error) { + test.deepEqual(error.message, `transition ${transition2._id} not found`); + } + test.end(); +}); diff --git a/test/transition/delay-test.js b/test/transition/delay-test.js index 46e641b..30a271f 100644 --- a/test/transition/delay-test.js +++ b/test/transition/delay-test.js @@ -18,8 +18,6 @@ tape("transition.delay() returns the delay for the first non-null node", functio test.strictEqual(d3_selection.select(two).transition(transition2).delay(), 50); test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).delay(), 0); test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).delay(), 50); - test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).delay(), 0); - test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).delay(), 50); test.end(); }); diff --git a/test/transition/duration-test.js b/test/transition/duration-test.js index 8a844b9..4fd170d 100644 --- a/test/transition/duration-test.js +++ b/test/transition/duration-test.js @@ -18,8 +18,6 @@ tape("transition.duration() returns the duration for the first non-null node", f test.strictEqual(d3_selection.select(two).transition(transition2).duration(), 50); test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).duration(), 250); test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).duration(), 50); - test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).duration(), 250); - test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).duration(), 50); test.end(); }); diff --git a/test/transition/ease-test.js b/test/transition/ease-test.js index 3ce3ac0..a52c6f4 100644 --- a/test/transition/ease-test.js +++ b/test/transition/ease-test.js @@ -21,8 +21,6 @@ tape("transition.ease() returns the easing function for the first non-null node" test.strictEqual(d3_selection.select(two).transition(transition2).ease(), d3_ease.easeBounce); test.strictEqual(d3_selection.selectAll([null, one]).transition(transition1).ease(), d3_ease.easeCubic); test.strictEqual(d3_selection.selectAll([null, two]).transition(transition2).ease(), d3_ease.easeBounce); - test.strictEqual(d3_selection.selectAll([one, two]).transition(transition1).ease(), d3_ease.easeCubic); - test.strictEqual(d3_selection.selectAll([two, one]).transition(transition2).ease(), d3_ease.easeBounce); test.end(); }); diff --git a/test/transition/merge-test.js b/test/transition/merge-test.js index cc3972e..0ffa2e9 100644 --- a/test/transition/merge-test.js +++ b/test/transition/merge-test.js @@ -7,8 +7,9 @@ tape("transition.merge(other) merges elements from the specified other transitio var document = jsdom("

"), one = document.querySelector("#one"), two = document.querySelector("#two"), - transition1 = d3_selection.selectAll([null, two]).transition(), - transition2 = d3_selection.selectAll([one, null]).transition(transition1), + transition0 = d3_selection.select(document.documentElement).transition(), + transition1 = d3_selection.selectAll([null, two]).transition(transition0), + transition2 = d3_selection.selectAll([one, null]).transition(transition0), transition3 = transition1.merge(transition2); test.equal(transition3 instanceof d3_transition.transition, true); test.deepEqual(transition3._groups, [[one, two]]);