JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 398
  • Score
    100M100P100Q96328F
  • License MIT

Provides Classes and utilities for dispatching and listening to events.

Package Exports

  • seng-event
  • seng-event/lib/AbstractEvent
  • seng-event/lib/EventDispatcher
  • seng-event/lib/event/CommonEvent
  • seng-event/lib/util/eventTypeUtils

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (seng-event) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Travis Code Climate Coveralls npm npm

seng-event

Provides Classes and utilities for dispatching and listening to events.

Provides an EventDispatcher base class that adds the ability to dispatch events and attach handlers that should be called when such events are triggered. New event classes can be created by extending the AbstractEvent class provided in this module. This module also provides basic event classes BasicEvent and CommonEvent that are ready to be used with EventDispatcher.

seng-event also supports event capturing and bubbling phases, heavily inspired by existing event dispatching systems like the functionality described in the DOM Event W3 spec

Installation

npm i -S seng-event

other

We also have browser, amd, commonjs, umd, systemjs and es6 versions of this module available attached to the Github Releases.

Basic usage

import EventDispatcher, {AbstractEvent} from 'seng-event';
import {generateEventTypes, EVENT_TYPE_PLACEHOLDER} from 'seng-event/lib/util/eventTypeUtils';

// extend EventDispatcher
class Foo extends EventDispatcher {
  ...
}

// Create your own event class
class FooEvent extends AbstractEvent {
   ...
   public static COMPLETE:string = EVENT_TYPE_PLACEHOLDER;
   ...
}
generateEventTypes({FooEvent});

// listener for events
const foo = new Foo();
const exampleHandler = (event:FooEvent) => 
{
  console.log('Handler called!', event.type, event.target);
}
foo.addEventListener(FooEvent.COMPLETE, exampleHandler);

// dispatch an event (will execute exampleHandler and log 'Handler called!')
foo.dispatchEvent(new FooEvent(FooEvent.COMPLETE));  

Documentation

View the generated documentation.

Building

In order to build seng-event, ensure that you have Git and Node.js installed.

Clone a copy of the repo:

git clone https://github.com/mediamonks/seng-event.git

Change to the seng-event directory:

cd seng-event

Install dev dependencies:

npm install

Use one of the following main scripts:

npm run build   		# build this project
npm run generate   		# generate all artifacts (compiles ts, webpack, docs and coverage)
npm run typings			# install .d.ts dependencies (done on install)
npm run test-unit    	# run the unit tests
npm run validate		# runs validation scripts, including test, lint and coverage check
npm run lint			# run tslint on this project
npm run doc				# generate typedoc and yuidoc documentation
npm run typescript-npm	# just compile the typescript output used in the npm module

When installing this module, it adds a pre-commit hook, that runs the validate script before committing, so you can be sure that everything checks out.

Contribute

View CONTRIBUTING.md

Authors

View AUTHORS.md

LICENSE

MIT © MediaMonks