1 | import { dispatch } from "d3-dispatch";
|
2 | import debounce from "../utils/debounce";
|
3 |
|
4 | export default () => {
|
5 | let triggered = 0;
|
6 |
|
7 | const events = dispatch("change");
|
8 |
|
9 | function change() {
|
10 | events.apply("change", this, arguments);
|
11 | triggered += 1;
|
12 | }
|
13 |
|
14 | return {
|
15 | change,
|
16 | on(typename, callback) {
|
17 | if (arguments.length < 2) return events.on(typename);
|
18 | events.on(typename, callback);
|
19 | return this;
|
20 | },
|
21 | trigger: debounce(change),
|
22 | triggered() {
|
23 | return triggered;
|
24 | }
|
25 | };
|
26 | };
|