https://github.com/layflags/proxy-trigger
Proxies events from one emitter to another.
https://github.com/layflags/proxy-trigger
Last synced: over 1 year ago
JSON representation
Proxies events from one emitter to another.
- Host: GitHub
- URL: https://github.com/layflags/proxy-trigger
- Owner: layflags
- License: mit
- Created: 2015-10-03T23:37:38.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-12-04T04:18:40.000Z (over 3 years ago)
- Last Synced: 2025-02-14T15:03:14.272Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 230 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# proxy-trigger
[](https://babeljs.io/docs/usage/polyfill/)
[](https://github.com/feross/standard)
[](https://circleci.com/gh/layflags/proxy-trigger)
Proxies [ampersand-events](http://ampersandjs.com/docs#ampersand-events) or
[Backbone.Events](http://backbonejs.org/#Events) from one emitter to another.
**A note about compatibility**
The [npm package](https://www.npmjs.com/package/proxy-trigger) should be used in
an **ES6 environment**. Even though the published code has ES5 syntax it uses
some ES6 features, so you have to make sure to use ES5 and ES6 polyfills if you
are in an ancient environment.
## Install
```sh
npm install proxy-trigger
```
## Usage
```javascript
import proxyTrigger from 'proxy-trigger'
// proxy all events by default
proxyTrigger(sourceEmitter, targetEmitter)
targetEmitter.on('foo bar', (msg) => console.log(msg))
sourceEmitter.trigger('foo', 'proxied foo')
sourceEmitter.trigger('bar', 'proxied bar')
// -> proxied foo
// -> proxied bar
// proxy a single event
proxyTrigger(sourceEmitter, targetEmitter, 'change:title')
targetEmitter.on('change:title', () => console.log('title changed'))
sourceEmitter.trigger('change:title')
// -> title changed
// proxy multiple events with a space-separated string
proxyTrigger(sourceEmitter, targetEmitter, 'open close')
// proxy multiple events with an array of strings
proxyTrigger(sourceEmitter, targetEmitter, ['open', 'close'])
// proxy events with name mapping using object notation
proxyTrigger(sourceEmitter, targetEmitter, {'change:title': 'change:source.title'})
// everything mixed
proxyTrigger(sourceEmitter, targetEmitter, [
'open close', {'change:title': 'change:source.title'}
])
```
## Mixin usage
```javascript
import {mixin as proxyTriggerMixin} from 'proxy-trigger'
import View from 'ampersand-view'
export default View.extend(proxyTriggerMixin, {
initialize () {
this.proxyTrigger(this.someSubView, 'close')
},
...
})
```
## Test
```sh
npm test
```
## License
[MIT](LICENSE)