google-map-react/develop/utils/props2Stream.js
Michael Diego c35f73569c
Update dependencies and fix develop env (#897)
* Upgrade packages
* Update yarn.lock
* Fix warnings
* Fix sass dependencies
* Fix sass modules
2020-07-24 01:54:20 -03:00

33 lines
923 B
JavaScript

import { Component } from 'react';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/operator/distinctUntilChanged';
import omit from './omit';
import createHelper from './createHelper';
import createEagerFactory from './createEagerFactory';
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
);
// eslint-disable-next-line camelcase
UNSAFE_componentWillReceiveProps(nextProps) {
this.props$.next(nextProps[propName]);
}
render() {
return factory({
...omit(this.props, [propName]),
[`${propName}$`]: this.props$,
});
}
};
};
export default createHelper(prop2Stream, 'prop2Stream');