|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <p align="center">
- <img src="https://i.imgur.com/BqsX9NT.png" width="300" height="300" alt="mitt">
- <br>
- <a href="https://www.npmjs.org/package/mitt"><img src="https://img.shields.io/npm/v/mitt.svg?style=flat" alt="npm"></a> <a href="https://travis-ci.org/developit/mitt"><img src="https://travis-ci.org/developit/mitt.svg?branch=master" alt="travis"></a> <a href="https://david-dm.org/developit/mitt"><img src="https://david-dm.org/developit/mitt/status.svg" alt="dependencies Status"></a> <a href="https://unpkg.com/mitt/dist/mitt.umd.js"><img src="http://img.badgesize.io/https://unpkg.com/mitt/dist/mitt.umd.js?compression=gzip" alt="gzip size"></a> <a href="https://packagephobia.now.sh/result?p=mitt"><img src="https://packagephobia.now.sh/badge?p=mitt" alt="install size"></a>
-
- </p>
-
- # Mitt
-
- > Tiny 200b functional event emitter / pubsub.
-
- - **Microscopic:** weighs less than 200 bytes gzipped
- - **Useful:** a wildcard `"*"` event type listens to all events
- - **Familiar:** same names & ideas as [Node's EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter)
- - **Functional:** methods don't rely on `this`
- - **Great Name:** somehow [mitt](https://npm.im/mitt) wasn't taken
-
- Mitt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE9+.
-
- ## Table of Contents
-
- - [Install](#install)
- - [Usage](#usage)
- - [Examples & Demos](#examples--demos)
- - [API](#api)
- - [Contribute](#contribute)
- - [License](#license)
-
- ## Install
-
- This project uses [node](http://nodejs.org) and [npm](https://npmjs.com). Go check them out if you don't have them locally installed.
-
- ```sh
- $ npm install --save mitt
- ```
-
- Then with a module bundler like [rollup](http://rollupjs.org/) or [webpack](https://webpack.js.org/), use as you would anything else:
-
- ```javascript
- // using ES6 modules
- import mitt from 'mitt'
-
- // using CommonJS modules
- var mitt = require('mitt')
- ```
-
- The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com):
-
- ```html
- <script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script>
- ```
-
- You can find the library on `window.mitt`.
-
- ## Usage
-
- ```js
- import mitt from 'mitt'
-
- const emitter = mitt()
-
- // listen to an event
- emitter.on('foo', e => console.log('foo', e) )
-
- // listen to all events
- emitter.on('*', (type, e) => console.log(type, e) )
-
- // fire an event
- emitter.emit('foo', { a: 'b' })
-
- // working with handler references:
- function onFoo() {}
- emitter.on('foo', onFoo) // listen
- emitter.off('foo', onFoo) // unlisten
- ```
-
- ### Typescript
-
- ```ts
- import mitt from 'mitt';
- const emitter: mitt.Emitter = mitt();
- ```
-
- ## Examples & Demos
-
- <a href="http://codepen.io/developit/pen/rjMEwW?editors=0110">
- <b>Preact + Mitt Codepen Demo</b>
- <br>
- <img src="https://i.imgur.com/CjBgOfJ.png" width="278" alt="preact + mitt preview">
- </a>
-
- * * *
-
- ## API
-
- <!-- Generated by documentation.js. Update this documentation by updating the source code. -->
-
- ### mitt
-
- Mitt: Tiny (~200b) functional event emitter / pubsub.
-
- **Parameters**
-
- - `all` **EventHandlerMap**
-
- Returns **Mitt**
-
- ### on
-
- Register an event handler for the given type.
-
- **Parameters**
-
- - `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to listen for, or `"*"` for all events
- - `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event
-
- ### off
-
- Remove an event handler for the given type.
-
- **Parameters**
-
- - `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Type of event to unregister `handler` from, or `"*"`
- - `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Handler function to remove
-
- ### emit
-
- Invoke all handlers for the given type.
- If present, `"*"` handlers are invoked after type-matched handlers.
-
- **Parameters**
-
- - `type` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** The event type to invoke
- - `evt` **Any?** Any value (object is recommended and powerful), passed to each handler
-
- ## Contribute
-
- First off, thanks for taking the time to contribute!
- Now, take a moment to be sure your contributions make sense to everyone else.
-
- Development Start:
-
- This project is typed with Flow Type annotations. To ensure you have the proper typings for this project run
-
- `flow-typed install`
-
- ### Reporting Issues
-
- Found a problem? Want a new feature? First of all see if your issue or idea has [already been reported](../../issues).
- If don't, just open a [new clear and descriptive issue](../../issues/new).
-
- ### Submitting pull requests
-
- Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.
-
- - Fork it!
- - Clone your fork: `git clone https://github.com/<your-username>/mitt`
- - Navigate to the newly cloned directory: `cd mitt`
- - Create a new branch for the new feature: `git checkout -b my-new-feature`
- - Install the tools necessary for development: `npm install`
- - Make your changes.
- - Commit your changes: `git commit -am 'Add some feature'`
- - Push to the branch: `git push origin my-new-feature`
- - Submit a pull request with full remarks documenting your changes.
-
- ## License
-
- [MIT License](https://opensource.org/licenses/MIT) © [Jason Miller](https://jasonformat.com/)
|