@liquidautumn/react-google-maps
Version:
React.js Google Maps integration component
224 lines (175 loc) • 9.43 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _addonsEventListsMarkerClustererEventList = require('../addonsEventLists/MarkerClustererEventList');
var _addonsEventListsMarkerClustererEventList2 = _interopRequireDefault(_addonsEventListsMarkerClustererEventList);
var _utilsEventHandlerCreator = require('../../utils/eventHandlerCreator');
var _utilsEventHandlerCreator2 = _interopRequireDefault(_utilsEventHandlerCreator);
var _utilsDefaultPropsCreator = require('../../utils/defaultPropsCreator');
var _utilsDefaultPropsCreator2 = _interopRequireDefault(_utilsDefaultPropsCreator);
var _utilsComposeOptions = require('../../utils/composeOptions');
var _utilsComposeOptions2 = _interopRequireDefault(_utilsComposeOptions);
var _utilsComponentLifecycleDecorator = require('../../utils/componentLifecycleDecorator');
var _utilsComponentLifecycleDecorator2 = _interopRequireDefault(_utilsComponentLifecycleDecorator);
var _creatorsGoogleMapHolder = require('../../creators/GoogleMapHolder');
var _creatorsGoogleMapHolder2 = _interopRequireDefault(_creatorsGoogleMapHolder);
var markerClustererControlledPropTypes = {
// http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclustererplus/docs/reference.html
averageCenter: _react.PropTypes.bool,
batchSizeIE: _react.PropTypes.number,
calculator: _react.PropTypes.func,
clusterClass: _react.PropTypes.string,
enableRetinaIcons: _react.PropTypes.bool,
gridSize: _react.PropTypes.number,
ignoreHidden: _react.PropTypes.bool,
imageExtension: _react.PropTypes.string,
imagePath: _react.PropTypes.string,
imageSizes: _react.PropTypes.array,
maxZoom: _react.PropTypes.number,
minimumClusterSize: _react.PropTypes.number,
styles: _react.PropTypes.array,
title: _react.PropTypes.string,
zoomOnClick: _react.PropTypes.bool
};
exports.markerClustererControlledPropTypes = markerClustererControlledPropTypes;
var markerClustererDefaultPropTypes = (0, _utilsDefaultPropsCreator2['default'])(markerClustererControlledPropTypes);
exports.markerClustererDefaultPropTypes = markerClustererDefaultPropTypes;
var markerClustererUpdaters = {
averageCenter: function averageCenter(_averageCenter, component) {
component.getMarkerClusterer().setAverageCenter(_averageCenter);
},
batchSizeIE: function batchSizeIE(_batchSizeIE, component) {
component.getMarkerClusterer().setBatchSizeIE(_batchSizeIE);
},
calculator: function calculator(_calculator, component) {
component.getMarkerClusterer().setCalculator(_calculator);
},
enableRetinaIcons: function enableRetinaIcons(_enableRetinaIcons, component) {
component.getMarkerClusterer().setEnableRetinaIcons(_enableRetinaIcons);
},
gridSize: function gridSize(_gridSize, component) {
component.getMarkerClusterer().setGridSize(_gridSize);
},
ignoreHidden: function ignoreHidden(_ignoreHidden, component) {
component.getMarkerClusterer().setIgnoreHidden(_ignoreHidden);
},
imageExtension: function imageExtension(_imageExtension, component) {
component.getMarkerClusterer().setImageExtension(_imageExtension);
},
imagePath: function imagePath(_imagePath, component) {
component.getMarkerClusterer().setImagePath(_imagePath);
},
imageSizes: function imageSizes(_imageSizes, component) {
component.getMarkerClusterer().setImageSizes(_imageSizes);
},
maxZoom: function maxZoom(_maxZoom, component) {
component.getMarkerClusterer().setMaxZoom(_maxZoom);
},
minimumClusterSize: function minimumClusterSize(_minimumClusterSize, component) {
component.getMarkerClusterer().setMinimumClusterSize(_minimumClusterSize);
},
styles: function styles(_styles, component) {
component.getMarkerClusterer().setStyles(_styles);
},
title: function title(_title, component) {
component.getMarkerClusterer().setTitle(_title);
},
zoomOnClick: function zoomOnClick(_zoomOnClick, component) {
component.getMarkerClusterer().setZoomOnClick(_zoomOnClick);
}
};
var _eventHandlerCreator = (0, _utilsEventHandlerCreator2['default'])(_addonsEventListsMarkerClustererEventList2['default']);
var eventPropTypes = _eventHandlerCreator.eventPropTypes;
var registerEvents = _eventHandlerCreator.registerEvents;
var markerClustererEventPropTypes = eventPropTypes;
exports.markerClustererEventPropTypes = markerClustererEventPropTypes;
var MarkerClustererCreator = (function (_Component) {
_inherits(MarkerClustererCreator, _Component);
function MarkerClustererCreator() {
_classCallCheck(this, _MarkerClustererCreator);
_get(Object.getPrototypeOf(_MarkerClustererCreator.prototype), 'constructor', this).apply(this, arguments);
}
_createClass(MarkerClustererCreator, [{
key: 'getMarkerClusterer',
value: function getMarkerClusterer() {
return this.props.markerClusterer;
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(prevProps) {
this.props.markerClusterer.repaint();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this.props.markerClusterer.setMap(null);
}
}, {
key: 'getAnchor',
value: function getAnchor() {
return this.props.markerClusterer;
}
}, {
key: 'getAnchorType',
value: function getAnchorType() {
return 'MarkerClusterer';
}
}, {
key: 'render',
value: function render() {
var _this = this;
var _props = this.props;
var mapHolderRef = _props.mapHolderRef;
var children = _props.children;
if (_react.Children.count(children) > 0) {
return _react2['default'].createElement(
'div',
null,
_react.Children.map(children, function (childElement) {
if (_react2['default'].isValidElement(childElement)) {
return _react2['default'].cloneElement(childElement, {
mapHolderRef: mapHolderRef,
anchorHolderRef: _this
});
} else {
return childElement;
}
})
);
} else {
return _react2['default'].createElement('noscript', null);
}
}
}], [{
key: '_createMarkerClusterer',
value: function _createMarkerClusterer(mapHolderRef, markerClustererProps) {
var GoogleMarkerClusterer = require('marker-clusterer-plus');
// http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclustererplus/docs/reference.html#events
var markerClusterer = new GoogleMarkerClusterer(mapHolderRef.getMap(), [], (0, _utilsComposeOptions2['default'])(markerClustererProps, markerClustererControlledPropTypes));
return markerClusterer;
}
}, {
key: 'PropTypes',
value: {
mapHolderRef: _react.PropTypes.instanceOf(_creatorsGoogleMapHolder2['default']).isRequired,
markerClusterer: _react.PropTypes.object.isRequired
},
enumerable: true
}]);
var _MarkerClustererCreator = MarkerClustererCreator;
MarkerClustererCreator = (0, _utilsComponentLifecycleDecorator2['default'])({
registerEvents: registerEvents,
instanceMethodName: 'getMarkerClusterer',
updaters: markerClustererUpdaters
})(MarkerClustererCreator) || MarkerClustererCreator;
return MarkerClustererCreator;
})(_react.Component);
exports['default'] = MarkerClustererCreator;