UNPKG

@syncromatics/react-google-maps

Version:
206 lines (163 loc) 6.11 kB
"use strict" Object.defineProperty(exports, "__esModule", { value: true, }) var _objectWithoutProperties2 = require("babel-runtime/helpers/objectWithoutProperties") var _objectWithoutProperties3 = _interopRequireDefault( _objectWithoutProperties2 ) var _defineProperty2 = require("babel-runtime/helpers/defineProperty") var _defineProperty3 = _interopRequireDefault(_defineProperty2) var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of") var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf) var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck") var _classCallCheck3 = _interopRequireDefault(_classCallCheck2) var _createClass2 = require("babel-runtime/helpers/createClass") var _createClass3 = _interopRequireDefault(_createClass2) var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn") var _possibleConstructorReturn3 = _interopRequireDefault( _possibleConstructorReturn2 ) var _inherits2 = require("babel-runtime/helpers/inherits") var _inherits3 = _interopRequireDefault(_inherits2) var _bind2 = require("lodash/bind") var _bind3 = _interopRequireDefault(_bind2) exports.withGoogleMap = withGoogleMap var _warning = require("warning") var _warning2 = _interopRequireDefault(_warning) var _invariant = require("invariant") var _invariant2 = _interopRequireDefault(_invariant) var _recompose = require("recompose") var _propTypes = require("prop-types") var _propTypes2 = _interopRequireDefault(_propTypes) var _react = require("react") var _react2 = _interopRequireDefault(_react) var _constants = require("./constants") function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } /* global google */ function withGoogleMap(BaseComponent) { var factory = _react2.default.createFactory(BaseComponent) var Container = (function(_React$PureComponent) { ;(0, _inherits3.default)(Container, _React$PureComponent) function Container() { var _ref var _temp, _this, _ret ;(0, _classCallCheck3.default)(this, Container) for ( var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++ ) { args[_key] = arguments[_key] } return ( (_ret = ((_temp = ((_this = (0, _possibleConstructorReturn3.default)( this, (_ref = Container.__proto__ || (0, _getPrototypeOf2.default)(Container)).call.apply( _ref, [this].concat(args) ) )), _this)), (_this.state = { map: null, }), (_this.handleComponentMount = (0, _bind3.default)( _this.handleComponentMount, _this )), _temp)), (0, _possibleConstructorReturn3.default)(_this, _ret) ) } ;(0, _createClass3.default)(Container, [ { key: "getChildContext", value: function getChildContext() { return (0, _defineProperty3.default)( {}, _constants.MAP, this.state.map ) }, }, { key: "componentWillMount", value: function componentWillMount() { var _props = this.props, containerElement = _props.containerElement, mapElement = _props.mapElement ;(0, _invariant2.default)( !!containerElement && !!mapElement, "Required props containerElement or mapElement is missing. You need to provide both of them.\n The `google.maps.Map` instance will be initialized on mapElement and it's wrapped by containerElement.\nYou need to provide both of them since Google Map requires the DOM to have height when initialized." ) }, }, { key: "handleComponentMount", value: function handleComponentMount(node) { if (this.state.map || node === null) { return } ;(0, _warning2.default)( "undefined" !== typeof google, "Make sure you've put a <script> tag in your <head> element to load Google Maps JavaScript API v3.\n If you're looking for built-in support to load it for you, use the \"async/ScriptjsLoader\" instead.\n See https://github.com/tomchentw/react-google-maps/pull/168" ) // https://developers.google.com/maps/documentation/javascript/3.exp/reference#Map var map = new google.maps.Map(node) this.setState({ map: map }) }, }, { key: "render", value: function render() { var _props2 = this.props, containerElement = _props2.containerElement, mapElement = _props2.mapElement, restProps = (0, _objectWithoutProperties3.default)(_props2, [ "containerElement", "mapElement", ]) var map = this.state.map if (map) { return _react2.default.cloneElement( containerElement, {}, _react2.default.cloneElement(mapElement, { ref: this.handleComponentMount, }), _react2.default.createElement("div", null, factory(restProps)) ) } else { return _react2.default.cloneElement( containerElement, {}, _react2.default.cloneElement(mapElement, { ref: this.handleComponentMount, }), _react2.default.createElement("div", null) ) } }, }, ]) return Container })(_react2.default.PureComponent) Container.displayName = "withGoogleMap(" + (0, _recompose.getDisplayName)(BaseComponent) + ")" Container.propTypes = { containerElement: _propTypes2.default.node.isRequired, mapElement: _propTypes2.default.node.isRequired, } Container.childContextTypes = (0, _defineProperty3.default)( {}, _constants.MAP, _propTypes2.default.object ) return Container } exports.default = withGoogleMap