Skip to content

Commit c859340

Browse files
committed
Fix d3#1364 - construct transition.event lazily.
1 parent 747c523 commit c859340

4 files changed

Lines changed: 12 additions & 13 deletions

File tree

d3.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7639,7 +7639,8 @@ d3 = function() {
76397639
d3_transitionInheritId = inheritId;
76407640
} else {
76417641
d3_selection_each(this, function(node) {
7642-
node.__transition__[id].event.on(type, listener);
7642+
var transition = node.__transition__[id];
7643+
(transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
76437644
});
76447645
}
76457646
return this;
@@ -7668,20 +7669,19 @@ d3 = function() {
76687669
var time = inherit.time;
76697670
transition = lock[id] = {
76707671
tween: new d3_Map(),
7671-
event: d3.dispatch("start", "end"),
76727672
time: time,
76737673
ease: inherit.ease,
76747674
delay: inherit.delay,
76757675
duration: inherit.duration
76767676
};
76777677
++lock.count;
76787678
d3.timer(function(elapsed) {
7679-
var d = node.__data__, ease = transition.ease, event = transition.event, delay = transition.delay, duration = transition.duration, tweened = [];
7679+
var d = node.__data__, ease = transition.ease, delay = transition.delay, duration = transition.duration, tweened = [];
76807680
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
76817681
function start(elapsed) {
76827682
if (lock.active > id) return stop();
76837683
lock.active = id;
7684-
event.start.call(node, d, i);
7684+
transition.event && transition.event.start.call(node, d, i);
76857685
transition.tween.forEach(function(key, value) {
76867686
if (value = value.call(node, d, i)) {
76877687
tweened.push(value);
@@ -7698,7 +7698,7 @@ d3 = function() {
76987698
}
76997699
if (t >= 1) {
77007700
stop();
7701-
event.end.call(node, d, i);
7701+
transition.event && transition.event.end.call(node, d, i);
77027702
return 1;
77037703
}
77047704
}

d3.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/transition/each.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ d3_transitionPrototype.each = function(type, listener) {
1515
d3_transitionInheritId = inheritId;
1616
} else {
1717
d3_selection_each(this, function(node) {
18-
node.__transition__[id].event.on(type, listener);
18+
var transition = node.__transition__[id];
19+
(transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
1920
});
2021
}
2122
return this;

src/transition/transition.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ function d3_transitionNode(node, i, id, inherit) {
5454

5555
transition = lock[id] = {
5656
tween: new d3_Map,
57-
event: d3.dispatch("start", "end"), // TODO construct lazily?
5857
time: time,
5958
ease: inherit.ease,
6059
delay: inherit.delay,
@@ -66,7 +65,6 @@ function d3_transitionNode(node, i, id, inherit) {
6665
d3.timer(function(elapsed) {
6766
var d = node.__data__,
6867
ease = transition.ease,
69-
event = transition.event,
7068
delay = transition.delay,
7169
duration = transition.duration,
7270
tweened = [];
@@ -78,7 +76,7 @@ function d3_transitionNode(node, i, id, inherit) {
7876
function start(elapsed) {
7977
if (lock.active > id) return stop();
8078
lock.active = id;
81-
event.start.call(node, d, i);
79+
transition.event && transition.event.start.call(node, d, i);
8280

8381
transition.tween.forEach(function(key, value) {
8482
if (value = value.call(node, d, i)) {
@@ -103,7 +101,7 @@ function d3_transitionNode(node, i, id, inherit) {
103101

104102
if (t >= 1) {
105103
stop();
106-
event.end.call(node, d, i);
104+
transition.event && transition.event.end.call(node, d, i);
107105
return 1;
108106
}
109107
}

0 commit comments

Comments
 (0)