Socket
Socket
Sign inDemoInstall

d3-dispatch

Package Overview
Dependencies
0
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    d3-dispatch

Register named callbacks and call them with arguments.


Version published
Weekly downloads
4.2M
increased by0.14%
Maintainers
1
Install size
14.7 kB
Created
Weekly downloads
 

Readme

Source

d3-dispatch

Dispatching is a convenient mechanism for separating concerns with loosely-coupled code: register named callbacks and then call them with arbitrary arguments. A variety of D3 components, such as d3-request, use this mechanism to emit events to listeners. Think of this like Node’s EventEmitter, except every listener has a well-defined name so it’s easy to remove or replace them.

For example, to create a dispatch for start and end events:

var dispatch = d3.dispatch("start", "end");

You can then register callbacks for these events using dispatch.on:

dispatch.on("start", callback1);
dispatch.on("start.foo", callback2);
dispatch.on("end", callback3);

Then, you can dispatch a start event using dispatch.type:

dispatch.start("pass arguments to callbacks here");

Want a more involved example? See how to use d3-dispatch for coordinated views.

Installing

If you use NPM, npm install d3-dispatch. Otherwise, download the latest release. The released bundle supports AMD, CommonJS, and vanilla environments. Create a custom build using Rollup or your preferred bundler. You can also load directly from d3js.org:

<script src="https://d3js.org/d3-dispatch.v0.2.min.js"></script>

In a vanilla environment, a d3_dispatch global is exported. Try d3-dispatch in your browser.

API Reference

# d3.dispatch(types…)

Creates a new dispatch for the specified event types. Each type is a string, such as "start" or "end"; for each type, a method is exposed on the returned dispatch for invoking the callbacks of that type.

# dispatch.on(name[, callback])

Adds, removes or gets a callback of the specified name.

The name is a string, such as "start" or "end". A name consists of a event type optionally followed by a period (“.”) and a namespace; the optional namespace allows multiple callbacks to be registered to receive events of the same type, such as "start.foo" and "start.bar". You can remove all callbacks for the namespace “foo” by saying dispatch.on(".foo", null).

If a callback function is specified, it is registered for the specified (fully-qualified) name. If a callback was already registered for the same name, the existing callback is removed before the new callback is added. If callback is not specified, returns the current callback for the specified name, if any. The specified callback is invoked with the context and arguments specified by the caller; see dispatch.type.

# dispatch.type(arguments…)

The type method (such as dispatch.start for the start event) invokes each registered callback for the given type, passing the callback the specified arguments. The this context will be used as the context of the registered callbacks.

For example, if you wanted to dispatch your custom callbacks after handling a native click event, while preserving the current this context and arguments, you could say:

selection.on("click", function() {
  dispatch.custom.apply(this, arguments);
});

You can pass whatever arguments you want to callbacks; most commonly, you might create an object that represents an event, or pass the current datum (d) and index (i). See function.call and function.apply for further information.

Keywords

FAQs

Last updated on 29 Jan 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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