Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/outbrain-inc/postit

An elegant wrapper for postMessage
https://github.com/outbrain-inc/postit

Last synced: 1 day ago
JSON representation

An elegant wrapper for postMessage

Awesome Lists containing this project

README

        

# PostIt

An elegant wrapper for [`postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage).

![Unit Test Coverage](https://cdn.rawgit.com/outbrain/postit/master/coverage.svg)
[![Known Vulnerabilities](https://snyk.io/test/npm/postit-js/badge.svg)](https://snyk.io/test/npm/postit-js)

## Installation

Install `postit-js` as a dependency.

```bash
$ npm install --save postit-js
```

## Run PostIt in a Browser

### HTML Script Element

```html

```

### CommonJS Browser Shimming (Browserify and Other Flavors)

```js
var PostIt = require('postit');
```

## API Documentation

### .add(id) => `object`

Creates and manages a `PostIt` instance (`id`).

| Param | Type |
|:-----:|:--------:|
| id | `string` |

```javascript
PostIt.add('baz');
```

### .remove(id) => `object`

Removes a `PostIt` instance (`id`).

| Param | Type |
|:-----:|:--------:|
| id | `string` |

```javascript
PostIt.remove('baz');
```

### .removeAll() => `object`

Removes all `PostIt` instances.

```javascript
PostIt.removeAll();
```

### .size() => `number`

Returns the length of all `PostIt` instances.

```javascript
PostIt.size();
```

### .get(id) => `object` | `void`

Gets a `PostIt` instance (`id`).

| Param | Type |
|:-----:|:--------:|
| id | `string` |

```javascript
PostIt.get('baz');
```

### .getAll() => `object`

Gets all `PostIt` instances.

```javascript
PostIt.getAll();
```

### .on(id, event, listener) => `object`

Registers a `listener` to a `PostIt` instance (`id`), for a given `event`.

| Param | Type |
|:--------:|:----------:|
| id | `string` |
| event | `string` |
| listener | `function` |

```javascript
PostIt.on('baz', 'bar', function(event) {
// ...
});
```

### .off(id, event[, listener]) => `object`

- If a `listener` is not provided, then unregister all listeners from a `PostIt` instance (`id`), for a given `event`.
- If a `listener` is provided, then unregister a `listener` from a `PostIt` instance (`id`), for a given `event`.

| Param | Type |
|:----------:|:----------:|
| id | `string` |
| event | `string` |
| [listener] | `function` |

```javascript
PostIt.off('baz', 'bar');

function bazBar() {}

PostIt.off('baz', 'bar', bazBar);
```

### .emit(id, event, target, message, origin) => `object`

- If `event` is an asterisk (\*), then emit an `event` to all listeners registered to a `PostIt` instance (`id`), for all given `event`s.
- If `event` is not an asterisk (\*), then emit an `event` to all listeners registered to a `PostIt` instance (`id`), for a given `event`.

| Param | Type |
|:-------:|:-------------------------:|
| id | `string` |
| event | `string` |
| target | `object` |
| message | `string` `array` `object` |
| origin | `string` |

```javascript
PostIt.emit('baz', 'bar', window.parent.opener, { baz: 'bar' }, 'http://www.baz.com');
```

### .openWindow(url, name, options) => `object`

Loads a resource into a new browsing context (`window`).

| Param | Type |
|:--------------:|:--------:|
| url | `string` |
| name | `string` |
| options | `object` |
| options.width | `number` |
| options.height | `number` |

See: [window.open](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) for more options.

```javascript
PostIt.openWindow('http://www.foo.com', 'foo', {
width: 700,
height: 500
});
```

## Example

[Example](example)

## Contributing

[Contributing](CONTRIBUTING.md)

## Changelog

[Changelog](CHANGELOG.md)

## License

[MIT License](LICENSE)