google-map-react/develop/utils/props2Stream.js
Michael Diego 1ad4402462
Refactor code style (#533)
* Run eslint

* Avoid DRY in importing

* Update recompose

* Unnecessary backticks

* Update comments

* Move api-path into a variable

* Rename queryString to params

* Proper eslint-disable
2018-03-11 12:16:58 -07:00

30 lines
869 B
JavaScript

import { Component } from 'react';
import { createHelper } from 'recompose';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/operator/distinctUntilChanged';
import createEagerFactory from './createEagerFactory';
import omit from './omit';
const prop2Stream = (propName, comparator = (a, b) => a === b) =>
BaseComponent => {
const factory = createEagerFactory(BaseComponent);
return class extends Component {
props$ = new BehaviorSubject(this.props[propName]).distinctUntilChanged(
comparator
);
componentWillReceiveProps(nextProps) {
this.props$.next(nextProps[propName]);
}
render() {
return factory({
...omit(this.props, [propName]),
[`${propName}$`]: this.props$,
});
}
};
};
export default createHelper(prop2Stream, 'prop2Stream');