mirror of
https://github.com/google-map-react/google-map-react.git
synced 2025-12-08 18:26:32 +00:00
32 lines
872 B
JavaScript
32 lines
872 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
|
|
);
|
|
|
|
componentWillReceiveProps(nextProps) {
|
|
this.props$.next(nextProps[propName]);
|
|
}
|
|
|
|
render() {
|
|
return factory({
|
|
...omit(this.props, [propName]),
|
|
[`${propName}$`]: this.props$,
|
|
});
|
|
}
|
|
};
|
|
};
|
|
|
|
export default createHelper(prop2Stream, 'prop2Stream');
|