diff --git a/.github/workflows/npmpublish.yml b/.github/workflows/npmpublish.yml deleted file mode 100644 index 0eede46c..00000000 --- a/.github/workflows/npmpublish.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Node.js Package - -on: - release: - types: [created] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - run: npm ci - - run: npm test - - publish-npm: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - registry-url: https://registry.npmjs.org/ - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} - - publish-gpr: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - registry-url: https://npm.pkg.github.com/ - scope: '@your-github-username' - - run: npm ci - - run: npm publish - env: - NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/dist/GoogleApiComponent.js b/dist/GoogleApiComponent.js new file mode 100644 index 00000000..19582d5e --- /dev/null +++ b/dist/GoogleApiComponent.js @@ -0,0 +1,240 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'react-dom', './lib/ScriptCache', './lib/GoogleApi'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('react-dom'), require('./lib/ScriptCache'), require('./lib/GoogleApi')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.reactDom, global.ScriptCache, global.GoogleApi); + global.GoogleApiComponent = mod.exports; + } +})(this, function (exports, _react, _reactDom, _ScriptCache, _GoogleApi) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.wrapper = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _reactDom2 = _interopRequireDefault(_reactDom); + + var _GoogleApi2 = _interopRequireDefault(_GoogleApi); + + 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"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 defaultMapConfig = {}; + + var serialize = function serialize(obj) { + return JSON.stringify(obj); + }; + var isSame = function isSame(obj1, obj2) { + return obj1 === obj2 || serialize(obj1) === serialize(obj2); + }; + + var defaultCreateCache = function defaultCreateCache(options) { + options = options || {}; + var apiKey = options.apiKey; + var libraries = options.libraries || ['places']; + var version = options.version || '3'; + var language = options.language || 'en'; + var url = options.url; + var client = options.client; + var region = options.region; + + return (0, _ScriptCache.ScriptCache)({ + google: (0, _GoogleApi2.default)({ + apiKey: apiKey, + language: language, + libraries: libraries, + version: version, + url: url, + client: client, + region: region + }) + }); + }; + + var DefaultLoadingContainer = function DefaultLoadingContainer(props) { + return _react2.default.createElement( + 'div', + null, + 'Loading...' + ); + }; + + var wrapper = exports.wrapper = function wrapper(input, className, style) { + return function (WrappedComponent) { + var Wrapper = function (_React$Component) { + _inherits(Wrapper, _React$Component); + + function Wrapper(props, context) { + _classCallCheck(this, Wrapper); + + // Build options from input + var _this = _possibleConstructorReturn(this, (Wrapper.__proto__ || Object.getPrototypeOf(Wrapper)).call(this, props, context)); + + var options = typeof input === 'function' ? input(props) : input; + + // Initialize required Google scripts and other configured options + _this.initialize(options); + + _this.state = { + loaded: false, + map: null, + google: null, + options: options + }; + + _this.mapRef = _react2.default.createRef(); + return _this; + } + + _createClass(Wrapper, [{ + key: 'componentDidUpdate', + value: function componentDidUpdate(props) { + // Do not update input if it's not dynamic + if (typeof input !== 'function') { + return; + } + + // Get options to compare + var prevOptions = this.state.options; + var options = typeof input === 'function' ? input(props) : input; + + // Ignore when options are not changed + if (isSame(options, prevOptions)) { + return; + } + + // Initialize with new options + this.initialize(options); + + // Save new options in component state, + // and remove information about previous API handlers + this.state = { + options: options, + loaded: false, + google: null + }; + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.unregisterLoadHandler) { + this.unregisterLoadHandler(); + } + } + }, { + key: 'initialize', + value: function initialize(options) { + // Avoid race condition: remove previous 'load' listener + if (this.unregisterLoadHandler) { + this.unregisterLoadHandler(); + this.unregisterLoadHandler = null; + } + + // Load cache factory + var createCache = options.createCache || defaultCreateCache; + + // Build script + this.scriptCache = createCache(options); + this.unregisterLoadHandler = this.scriptCache.google.onLoad(this.onLoad.bind(this)); + + // Store information about loading container + this.LoadingContainer = options.LoadingContainer || DefaultLoadingContainer; + } + }, { + key: 'onLoad', + value: function onLoad(err, tag) { + this._gapi = window.google; + + this.setState({ loaded: true, google: this._gapi }); + } + }, { + key: 'render', + value: function render() { + var LoadingContainer = this.LoadingContainer; + + if (!this.state.loaded) { + return _react2.default.createElement(LoadingContainer, null); + } + + var props = Object.assign({}, this.props, { + loaded: this.state.loaded, + google: window.google + }); + + return _react2.default.createElement( + 'div', + { className: className, style: style }, + _react2.default.createElement(WrappedComponent, props), + _react2.default.createElement('div', { ref: this.mapRef }) + ); + } + }]); + + return Wrapper; + }(_react2.default.Component); + + return Wrapper; + }; + }; + + exports.default = wrapper; +}); \ No newline at end of file diff --git a/dist/components/Circle.js b/dist/components/Circle.js new file mode 100644 index 00000000..ce0ab9c3 --- /dev/null +++ b/dist/components/Circle.js @@ -0,0 +1,271 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/arePathsEqual', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/arePathsEqual'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.arePathsEqual, global.String); + global.Circle = mod.exports; + } +})(this, function (exports, _react, _propTypes, _arePathsEqual, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Circle = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'mouseout', 'mouseover']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var Circle = exports.Circle = function (_React$Component) { + _inherits(Circle, _React$Component); + + function Circle() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Circle); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Circle.__proto__ || Object.getPrototypeOf(Circle)).call.apply(_ref, [this].concat(args))), _this), _this.centerChanged = function (newCenter) { + var _this$props$center = _this.props.center, + lat = _this$props$center.lat, + lng = _this$props$center.lng; + + return lat !== newCenter.lat || lng !== newCenter.lng; + }, _this.propsChanged = function (newProps) { + if (_this.centerChanged(newProps.center)) return true; + + return Object.keys(Circle.propTypes).some(function (key) { + return _this.props[key] !== newProps[key]; + }); + }, _this.destroyCircle = function () { + if (_this.circle) { + _this.circle.setMap(null); + } + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Circle, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.circlePromise = wrappedPromise(); + this.renderCircle(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + var _props = this.props, + path = _props.path, + map = _props.map; + + + if (this.propsChanged(prevProps) || map !== prevProps.map || !(0, _arePathsEqual.arePathsEqual)(path, prevProps.path)) { + this.destroyCircle(); + this.renderCircle(); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.destroyCircle(); + } + }, { + key: 'renderCircle', + value: function renderCircle() { + var _this2 = this; + + var _props2 = this.props, + map = _props2.map, + google = _props2.google, + center = _props2.center, + radius = _props2.radius, + strokeColor = _props2.strokeColor, + strokeOpacity = _props2.strokeOpacity, + strokeWeight = _props2.strokeWeight, + fillColor = _props2.fillColor, + fillOpacity = _props2.fillOpacity, + draggable = _props2.draggable, + visible = _props2.visible, + props = _objectWithoutProperties(_props2, ['map', 'google', 'center', 'radius', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'fillColor', 'fillOpacity', 'draggable', 'visible']); + + if (!google) { + return null; + } + + var params = _extends({}, props, { + map: map, + center: center, + radius: radius, + draggable: draggable, + visible: visible, + options: { + strokeColor: strokeColor, + strokeOpacity: strokeOpacity, + strokeWeight: strokeWeight, + fillColor: fillColor, + fillOpacity: fillOpacity + } + }); + + this.circle = new google.maps.Circle(params); + + evtNames.forEach(function (e) { + _this2.circle.addListener(e, _this2.handleEvent(e)); + }); + + this.circlePromise.resolve(this.circle); + } + }, { + key: 'getCircle', + value: function getCircle() { + return this.circlePromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this3 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this3.props[evtName]) { + _this3.props[evtName](_this3.props, _this3.circle, e); + } + }; + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return Circle; + }(_react2.default.Component); + + Circle.propTypes = { + center: _propTypes2.default.object, + radius: _propTypes2.default.number, + strokeColor: _propTypes2.default.string, + strokeOpacity: _propTypes2.default.number, + strokeWeight: _propTypes2.default.number, + fillColor: _propTypes2.default.string, + fillOpacity: _propTypes2.default.number, + draggable: _propTypes2.default.bool, + visible: _propTypes2.default.bool + }; + + evtNames.forEach(function (e) { + return Circle.propTypes[e] = _propTypes2.default.func; + }); + + Circle.defaultProps = { + name: 'Circle' + }; + + exports.default = Circle; +}); \ No newline at end of file diff --git a/dist/components/HeatMap.js b/dist/components/HeatMap.js new file mode 100644 index 00000000..249d8a84 --- /dev/null +++ b/dist/components/HeatMap.js @@ -0,0 +1,240 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.String); + global.HeatMap = mod.exports; + } +})(this, function (exports, _react, _propTypes, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.HeatMap = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'mouseover', 'recenter']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var HeatMap = exports.HeatMap = function (_React$Component) { + _inherits(HeatMap, _React$Component); + + function HeatMap() { + _classCallCheck(this, HeatMap); + + return _possibleConstructorReturn(this, (HeatMap.__proto__ || Object.getPrototypeOf(HeatMap)).apply(this, arguments)); + } + + _createClass(HeatMap, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.heatMapPromise = wrappedPromise(); + this.renderHeatMap(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + if (this.props.map !== prevProps.map || this.props.position !== prevProps.position) { + if (this.heatMap) { + this.heatMap.setMap(null); + this.renderHeatMap(); + } + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.heatMap) { + this.heatMap.setMap(null); + } + } + }, { + key: 'renderHeatMap', + value: function renderHeatMap() { + var _this2 = this; + + var _props = this.props, + map = _props.map, + google = _props.google, + positions = _props.positions, + mapCenter = _props.mapCenter, + icon = _props.icon, + gradient = _props.gradient, + _props$radius = _props.radius, + radius = _props$radius === undefined ? 20 : _props$radius, + _props$opacity = _props.opacity, + opacity = _props$opacity === undefined ? 0.2 : _props$opacity, + props = _objectWithoutProperties(_props, ['map', 'google', 'positions', 'mapCenter', 'icon', 'gradient', 'radius', 'opacity']); + + if (!google) { + return null; + } + + var data = positions.map(function (pos) { + return { location: new google.maps.LatLng(pos.lat, pos.lng), weight: pos.weight }; + }); + + var pref = _extends({ + map: map, + gradient: gradient, + radius: radius, + opacity: opacity, + data: data + }, props); + + this.heatMap = new google.maps.visualization.HeatmapLayer(pref); + + this.heatMap.set('radius', radius === undefined ? 20 : radius); + + this.heatMap.set('opacity', opacity === undefined ? 0.2 : opacity); + + evtNames.forEach(function (e) { + _this2.heatMap.addListener(e, _this2.handleEvent(e)); + }); + + this.heatMapPromise.resolve(this.heatMap); + } + }, { + key: 'getHeatMap', + value: function getHeatMap() { + return this.heatMapPromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this3 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this3.props[evtName]) { + _this3.props[evtName](_this3.props, _this3.heatMap, e); + } + }; + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return HeatMap; + }(_react2.default.Component); + + HeatMap.propTypes = { + position: _propTypes2.default.object, + map: _propTypes2.default.object, + icon: _propTypes2.default.string + }; + + evtNames.forEach(function (e) { + return HeatMap.propTypes[e] = _propTypes2.default.func; + }); + + HeatMap.defaultProps = { + name: 'HeatMap' + }; + + exports.default = HeatMap; +}); \ No newline at end of file diff --git a/dist/components/InfoWindow.js b/dist/components/InfoWindow.js new file mode 100644 index 00000000..8c2ac35d --- /dev/null +++ b/dist/components/InfoWindow.js @@ -0,0 +1,244 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', 'react-dom', 'react-dom/server'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('react-dom'), require('react-dom/server')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.reactDom, global.server); + global.InfoWindow = mod.exports; + } +})(this, function (exports, _react, _propTypes, _reactDom, _server) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.InfoWindow = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + var _reactDom2 = _interopRequireDefault(_reactDom); + + var _server2 = _interopRequireDefault(_server); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 InfoWindow = exports.InfoWindow = function (_React$Component) { + _inherits(InfoWindow, _React$Component); + + function InfoWindow() { + _classCallCheck(this, InfoWindow); + + return _possibleConstructorReturn(this, (InfoWindow.__proto__ || Object.getPrototypeOf(InfoWindow)).apply(this, arguments)); + } + + _createClass(InfoWindow, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.renderInfoWindow(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + var _props = this.props, + google = _props.google, + map = _props.map; + + + if (!google || !map) { + return; + } + + if (map !== prevProps.map) { + this.renderInfoWindow(); + } + + if (this.props.position !== prevProps.position) { + this.updatePosition(); + } + + if (this.props.children !== prevProps.children) { + this.updateContent(); + } + + if (this.props.visible !== prevProps.visible || this.props.marker !== prevProps.marker || this.props.position !== prevProps.position) { + this.props.visible ? this.openWindow() : this.closeWindow(); + } + } + }, { + key: 'renderInfoWindow', + value: function renderInfoWindow() { + var _props2 = this.props, + map = _props2.map, + google = _props2.google, + mapCenter = _props2.mapCenter, + props = _objectWithoutProperties(_props2, ['map', 'google', 'mapCenter']); + + if (!google || !google.maps) { + return; + } + + var iw = this.infowindow = new google.maps.InfoWindow(_extends({ + content: '' + }, props)); + + google.maps.event.addListener(iw, 'closeclick', this.onClose.bind(this)); + google.maps.event.addListener(iw, 'domready', this.onOpen.bind(this)); + } + }, { + key: 'onOpen', + value: function onOpen() { + if (this.props.onOpen) { + this.props.onOpen(); + } + } + }, { + key: 'onClose', + value: function onClose() { + if (this.props.onClose) { + this.props.onClose(); + } + } + }, { + key: 'openWindow', + value: function openWindow() { + this.infowindow.open(this.props.map, this.props.marker); + } + }, { + key: 'updatePosition', + value: function updatePosition() { + var pos = this.props.position; + if (!(pos instanceof google.maps.LatLng)) { + pos = pos && new google.maps.LatLng(pos.lat, pos.lng); + } + this.infowindow.setPosition(pos); + } + }, { + key: 'updateContent', + value: function updateContent() { + var content = this.renderChildren(); + this.infowindow.setContent(content); + } + }, { + key: 'closeWindow', + value: function closeWindow() { + this.infowindow.close(); + } + }, { + key: 'renderChildren', + value: function renderChildren() { + var children = this.props.children; + + return _server2.default.renderToString(children); + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return InfoWindow; + }(_react2.default.Component); + + InfoWindow.propTypes = { + children: _propTypes2.default.element.isRequired, + map: _propTypes2.default.object, + marker: _propTypes2.default.object, + position: _propTypes2.default.object, + visible: _propTypes2.default.bool, + + // callbacks + onClose: _propTypes2.default.func, + onOpen: _propTypes2.default.func + }; + + InfoWindow.defaultProps = { + visible: false + }; + + exports.default = InfoWindow; +}); \ No newline at end of file diff --git a/dist/components/Marker.js b/dist/components/Marker.js new file mode 100644 index 00000000..7cc80544 --- /dev/null +++ b/dist/components/Marker.js @@ -0,0 +1,234 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.String); + global.Marker = mod.exports; + } +})(this, function (exports, _react, _propTypes, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Marker = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'dblclick', 'dragend', 'mousedown', 'mouseout', 'mouseover', 'mouseup', 'recenter']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var Marker = exports.Marker = function (_React$Component) { + _inherits(Marker, _React$Component); + + function Marker() { + _classCallCheck(this, Marker); + + return _possibleConstructorReturn(this, (Marker.__proto__ || Object.getPrototypeOf(Marker)).apply(this, arguments)); + } + + _createClass(Marker, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.markerPromise = wrappedPromise(); + this.renderMarker(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + if (this.props.map !== prevProps.map || this.props.position !== prevProps.position || this.props.icon !== prevProps.icon) { + if (this.marker) { + this.marker.setMap(null); + } + this.renderMarker(); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.marker) { + this.marker.setMap(null); + } + } + }, { + key: 'renderMarker', + value: function renderMarker() { + var _this2 = this; + + var _props = this.props, + map = _props.map, + google = _props.google, + position = _props.position, + mapCenter = _props.mapCenter, + icon = _props.icon, + label = _props.label, + draggable = _props.draggable, + title = _props.title, + props = _objectWithoutProperties(_props, ['map', 'google', 'position', 'mapCenter', 'icon', 'label', 'draggable', 'title']); + + if (!google) { + return null; + } + + var pos = position || mapCenter; + if (!(pos instanceof google.maps.LatLng)) { + pos = new google.maps.LatLng(pos.lat, pos.lng); + } + + var pref = _extends({ + map: map, + position: pos, + icon: icon, + label: label, + title: title, + draggable: draggable + }, props); + this.marker = new google.maps.Marker(pref); + + evtNames.forEach(function (e) { + _this2.marker.addListener(e, _this2.handleEvent(e)); + }); + + this.markerPromise.resolve(this.marker); + } + }, { + key: 'getMarker', + value: function getMarker() { + return this.markerPromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this3 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this3.props[evtName]) { + _this3.props[evtName](_this3.props, _this3.marker, e); + } + }; + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return Marker; + }(_react2.default.Component); + + Marker.propTypes = { + position: _propTypes2.default.object, + map: _propTypes2.default.object + }; + + evtNames.forEach(function (e) { + return Marker.propTypes[e] = _propTypes2.default.func; + }); + + Marker.defaultProps = { + name: 'Marker' + }; + + exports.default = Marker; +}); \ No newline at end of file diff --git a/dist/components/Polygon.js b/dist/components/Polygon.js new file mode 100644 index 00000000..41e8f24e --- /dev/null +++ b/dist/components/Polygon.js @@ -0,0 +1,244 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/arePathsEqual', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/arePathsEqual'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.arePathsEqual, global.String); + global.Polygon = mod.exports; + } +})(this, function (exports, _react, _propTypes, _arePathsEqual, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Polygon = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'mouseout', 'mouseover']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var Polygon = exports.Polygon = function (_React$Component) { + _inherits(Polygon, _React$Component); + + function Polygon() { + _classCallCheck(this, Polygon); + + return _possibleConstructorReturn(this, (Polygon.__proto__ || Object.getPrototypeOf(Polygon)).apply(this, arguments)); + } + + _createClass(Polygon, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.polygonPromise = wrappedPromise(); + this.renderPolygon(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + if (this.propsChanged(prevProps) || this.props.map !== prevProps.map || !(0, _arePathsEqual.arePathsEqual)(this.props.paths, prevProps.paths)) { + if (this.polygon) { + this.polygon.setMap(null); + } + this.renderPolygon(); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.polygon) { + this.polygon.setMap(null); + } + } + }, { + key: 'propsChanged', + value: function propsChanged(newProps) { + var _this2 = this; + + return Object.keys(Polygon.propTypes).some(function (key) { + return _this2.props[key] !== newProps[key]; + }); + } + }, { + key: 'renderPolygon', + value: function renderPolygon() { + var _this3 = this; + + var _props = this.props, + map = _props.map, + google = _props.google, + paths = _props.paths, + strokeColor = _props.strokeColor, + strokeOpacity = _props.strokeOpacity, + strokeWeight = _props.strokeWeight, + fillColor = _props.fillColor, + fillOpacity = _props.fillOpacity, + props = _objectWithoutProperties(_props, ['map', 'google', 'paths', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'fillColor', 'fillOpacity']); + + if (!google) { + return null; + } + + var params = _extends({ + map: map, + paths: paths, + strokeColor: strokeColor, + strokeOpacity: strokeOpacity, + strokeWeight: strokeWeight, + fillColor: fillColor, + fillOpacity: fillOpacity + }, props); + + this.polygon = new google.maps.Polygon(params); + + evtNames.forEach(function (e) { + _this3.polygon.addListener(e, _this3.handleEvent(e)); + }); + + this.polygonPromise.resolve(this.polygon); + } + }, { + key: 'getPolygon', + value: function getPolygon() { + return this.polygonPromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this4 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this4.props[evtName]) { + _this4.props[evtName](_this4.props, _this4.polygon, e); + } + }; + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return Polygon; + }(_react2.default.Component); + + Polygon.propTypes = { + paths: _propTypes2.default.array, + strokeColor: _propTypes2.default.string, + strokeOpacity: _propTypes2.default.number, + strokeWeight: _propTypes2.default.number, + fillColor: _propTypes2.default.string, + fillOpacity: _propTypes2.default.number + }; + + evtNames.forEach(function (e) { + return Polygon.propTypes[e] = _propTypes2.default.func; + }); + + Polygon.defaultProps = { + name: 'Polygon' + }; + + exports.default = Polygon; +}); \ No newline at end of file diff --git a/dist/components/Polyline.js b/dist/components/Polyline.js new file mode 100644 index 00000000..fc63a47a --- /dev/null +++ b/dist/components/Polyline.js @@ -0,0 +1,238 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/arePathsEqual', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/arePathsEqual'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.arePathsEqual, global.String); + global.Polyline = mod.exports; + } +})(this, function (exports, _react, _propTypes, _arePathsEqual, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Polyline = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'mouseout', 'mouseover']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var Polyline = exports.Polyline = function (_React$Component) { + _inherits(Polyline, _React$Component); + + function Polyline() { + _classCallCheck(this, Polyline); + + return _possibleConstructorReturn(this, (Polyline.__proto__ || Object.getPrototypeOf(Polyline)).apply(this, arguments)); + } + + _createClass(Polyline, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.polylinePromise = wrappedPromise(); + this.renderPolyline(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + if (this.propsChanged(prevProps) || this.props.map !== prevProps.map || !(0, _arePathsEqual.arePathsEqual)(this.props.path, prevProps.path)) { + if (this.polyline) { + this.polyline.setMap(null); + } + this.renderPolyline(); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.polyline) { + this.polyline.setMap(null); + } + } + }, { + key: 'propsChanged', + value: function propsChanged(newProps) { + var _this2 = this; + + return Object.keys(Polyline.propTypes).some(function (key) { + return _this2.props[key] !== newProps[key]; + }); + } + }, { + key: 'renderPolyline', + value: function renderPolyline() { + var _this3 = this; + + var _props = this.props, + map = _props.map, + google = _props.google, + path = _props.path, + strokeColor = _props.strokeColor, + strokeOpacity = _props.strokeOpacity, + strokeWeight = _props.strokeWeight, + props = _objectWithoutProperties(_props, ['map', 'google', 'path', 'strokeColor', 'strokeOpacity', 'strokeWeight']); + + if (!google) { + return null; + } + + var params = _extends({ + map: map, + path: path, + strokeColor: strokeColor, + strokeOpacity: strokeOpacity, + strokeWeight: strokeWeight + }, props); + + this.polyline = new google.maps.Polyline(params); + + evtNames.forEach(function (e) { + _this3.polyline.addListener(e, _this3.handleEvent(e)); + }); + + this.polylinePromise.resolve(this.polyline); + } + }, { + key: 'getPolyline', + value: function getPolyline() { + return this.polylinePromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this4 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this4.props[evtName]) { + _this4.props[evtName](_this4.props, _this4.polyline, e); + } + }; + } + }, { + key: 'render', + value: function render() { + return null; + } + }]); + + return Polyline; + }(_react2.default.Component); + + Polyline.propTypes = { + path: _propTypes2.default.array, + strokeColor: _propTypes2.default.string, + strokeOpacity: _propTypes2.default.number, + strokeWeight: _propTypes2.default.number + }; + + evtNames.forEach(function (e) { + return Polyline.propTypes[e] = _propTypes2.default.func; + }); + + Polyline.defaultProps = { + name: 'Polyline' + }; + + exports.default = Polyline; +}); \ No newline at end of file diff --git a/dist/components/Rectangle.js b/dist/components/Rectangle.js new file mode 100644 index 00000000..ef8642be --- /dev/null +++ b/dist/components/Rectangle.js @@ -0,0 +1,236 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', 'react', 'prop-types', '../lib/areBoundsEqual', '../lib/String'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('react'), require('prop-types'), require('../lib/areBoundsEqual'), require('../lib/String')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.react, global.propTypes, global.areBoundsEqual, global.String); + global.Rectangle = mod.exports; + } +})(this, function (exports, _react, _propTypes, _areBoundsEqual, _String) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Rectangle = undefined; + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + function _objectWithoutProperties(obj, keys) { + var target = {}; + + for (var i in obj) { + if (keys.indexOf(i) >= 0) continue; + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; + target[i] = obj[i]; + } + + return target; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 evtNames = ['click', 'mouseout', 'mouseover']; + + var wrappedPromise = function wrappedPromise() { + var wrappedPromise = {}, + promise = new Promise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + wrappedPromise.then = promise.then.bind(promise); + wrappedPromise.catch = promise.catch.bind(promise); + wrappedPromise.promise = promise; + + return wrappedPromise; + }; + + var Rectangle = exports.Rectangle = function (_React$Component) { + _inherits(Rectangle, _React$Component); + + function Rectangle() { + _classCallCheck(this, Rectangle); + + return _possibleConstructorReturn(this, (Rectangle.__proto__ || Object.getPrototypeOf(Rectangle)).apply(this, arguments)); + } + + _createClass(Rectangle, [{ + key: 'componentDidMount', + value: function componentDidMount() { + this.rectanglePromise = wrappedPromise(); + this.renderRectangle(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps) { + if (this.props.map !== prevProps.map || !(0, _areBoundsEqual.areBoundsEqual)(this.props.bounds, prevProps.bounds)) { + if (this.rectangle) { + this.rectangle.setMap(null); + } + this.renderRectangle(); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + if (this.rectangle) { + this.rectangle.setMap(null); + } + } + }, { + key: 'renderRectangle', + value: function renderRectangle() { + var _this2 = this; + + var _props = this.props, + map = _props.map, + google = _props.google, + bounds = _props.bounds, + strokeColor = _props.strokeColor, + strokeOpacity = _props.strokeOpacity, + strokeWeight = _props.strokeWeight, + fillColor = _props.fillColor, + fillOpacity = _props.fillOpacity, + props = _objectWithoutProperties(_props, ['map', 'google', 'bounds', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'fillColor', 'fillOpacity']); + + if (!google) { + return null; + } + + var params = _extends({ + map: map, + bounds: bounds, + strokeColor: strokeColor, + strokeOpacity: strokeOpacity, + strokeWeight: strokeWeight, + fillColor: fillColor, + fillOpacity: fillOpacity + }, props); + + this.rectangle = new google.maps.Rectangle(params); + + evtNames.forEach(function (e) { + _this2.rectangle.addListener(e, _this2.handleEvent(e)); + }); + + this.rectanglePromise.resolve(this.rectangle); + } + }, { + key: 'getRectangle', + value: function getRectangle() { + return this.rectanglePromise; + } + }, { + key: 'handleEvent', + value: function handleEvent(evt) { + var _this3 = this; + + return function (e) { + var evtName = 'on' + (0, _String.camelize)(evt); + if (_this3.props[evtName]) { + _this3.props[evtName](_this3.props, _this3.rectangle, e); + } + }; + } + }, { + key: 'render', + value: function render() { + console.log('hii, ', this.props.bounds); + return null; + } + }]); + + return Rectangle; + }(_react2.default.Component); + + Rectangle.propTypes = { + bounds: _propTypes2.default.object, + strokeColor: _propTypes2.default.string, + strokeOpacity: _propTypes2.default.number, + strokeWeight: _propTypes2.default.number, + fillColor: _propTypes2.default.string, + fillOpacity: _propTypes2.default.number + }; + + evtNames.forEach(function (e) { + return Rectangle.propTypes[e] = _propTypes2.default.func; + }); + + Rectangle.defaultProps = { + name: 'Rectangle' + }; + + exports.default = Rectangle; +}); \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 00000000..f31b53a5 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,444 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', './GoogleApiComponent', './components/Marker', './components/InfoWindow', './components/HeatMap', './components/Polygon', './components/Polyline', './components/Circle', './components/Rectangle', 'react', 'prop-types', 'react-dom', './lib/String', './lib/cancelablePromise'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('./GoogleApiComponent'), require('./components/Marker'), require('./components/InfoWindow'), require('./components/HeatMap'), require('./components/Polygon'), require('./components/Polyline'), require('./components/Circle'), require('./components/Rectangle'), require('react'), require('prop-types'), require('react-dom'), require('./lib/String'), require('./lib/cancelablePromise')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.GoogleApiComponent, global.Marker, global.InfoWindow, global.HeatMap, global.Polygon, global.Polyline, global.Circle, global.Rectangle, global.react, global.propTypes, global.reactDom, global.String, global.cancelablePromise); + global.index = mod.exports; + } +})(this, function (exports, _GoogleApiComponent, _Marker, _InfoWindow, _HeatMap, _Polygon, _Polyline, _Circle, _Rectangle, _react, _propTypes, _reactDom, _String, _cancelablePromise) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Map = exports.Rectangle = exports.Circle = exports.Polyline = exports.Polygon = exports.HeatMap = exports.InfoWindow = exports.Marker = exports.GoogleApiWrapper = undefined; + Object.defineProperty(exports, 'GoogleApiWrapper', { + enumerable: true, + get: function () { + return _GoogleApiComponent.wrapper; + } + }); + Object.defineProperty(exports, 'Marker', { + enumerable: true, + get: function () { + return _Marker.Marker; + } + }); + Object.defineProperty(exports, 'InfoWindow', { + enumerable: true, + get: function () { + return _InfoWindow.InfoWindow; + } + }); + Object.defineProperty(exports, 'HeatMap', { + enumerable: true, + get: function () { + return _HeatMap.HeatMap; + } + }); + Object.defineProperty(exports, 'Polygon', { + enumerable: true, + get: function () { + return _Polygon.Polygon; + } + }); + Object.defineProperty(exports, 'Polyline', { + enumerable: true, + get: function () { + return _Polyline.Polyline; + } + }); + Object.defineProperty(exports, 'Circle', { + enumerable: true, + get: function () { + return _Circle.Circle; + } + }); + Object.defineProperty(exports, 'Rectangle', { + enumerable: true, + get: function () { + return _Rectangle.Rectangle; + } + }); + + var _react2 = _interopRequireDefault(_react); + + var _propTypes2 = _interopRequireDefault(_propTypes); + + var _reactDom2 = _interopRequireDefault(_reactDom); + + 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"); + } + } + + 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; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + 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 mapStyles = { + container: { + position: 'absolute', + width: '100%', + height: '100%' + }, + map: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + top: 0 + } + }; + + var evtNames = ['ready', 'click', 'dragend', 'recenter', 'bounds_changed', 'center_changed', 'dblclick', 'dragstart', 'heading_change', 'idle', 'maptypeid_changed', 'mousemove', 'mouseout', 'mouseover', 'projection_changed', 'resize', 'rightclick', 'tilesloaded', 'tilt_changed', 'zoom_changed']; + + var Map = exports.Map = function (_React$Component) { + _inherits(Map, _React$Component); + + function Map(props) { + _classCallCheck(this, Map); + + var _this = _possibleConstructorReturn(this, (Map.__proto__ || Object.getPrototypeOf(Map)).call(this, props)); + + if (!props.hasOwnProperty('google')) { + throw new Error('You must include a `google` prop'); + } + + _this.listeners = {}; + _this.state = { + currentLocation: { + lat: _this.props.initialCenter.lat, + lng: _this.props.initialCenter.lng + } + }; + + _this.mapRef = _react2.default.createRef(); + return _this; + } + + _createClass(Map, [{ + key: 'componentDidMount', + value: function componentDidMount() { + var _this2 = this; + + if (this.props.centerAroundCurrentLocation) { + if (navigator && navigator.geolocation) { + this.geoPromise = (0, _cancelablePromise.makeCancelable)(new Promise(function (resolve, reject) { + navigator.geolocation.getCurrentPosition(resolve, reject); + })); + + this.geoPromise.promise.then(function (pos) { + var coords = pos.coords; + _this2.setState({ + currentLocation: { + lat: coords.latitude, + lng: coords.longitude + } + }); + }).catch(function (e) { + return e; + }); + } + } + this.loadMap(); + } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps, prevState) { + if (prevProps.google !== this.props.google) { + this.loadMap(); + } + if (this.props.visible !== prevProps.visible) { + this.restyleMap(); + } + if (this.props.zoom !== prevProps.zoom) { + this.map.setZoom(this.props.zoom); + } + if (this.props.center !== prevProps.center) { + this.setState({ + currentLocation: this.props.center + }); + } + if (prevState.currentLocation !== this.state.currentLocation) { + this.recenterMap(); + } + if (this.props.bounds && this.props.bounds !== prevProps.bounds) { + this.map.fitBounds(this.props.bounds); + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + var _this3 = this; + + var google = this.props.google; + + if (this.geoPromise) { + this.geoPromise.cancel(); + } + Object.keys(this.listeners).forEach(function (e) { + google.maps.event.removeListener(_this3.listeners[e]); + }); + } + }, { + key: 'loadMap', + value: function loadMap() { + var _this4 = this; + + if (this.props && this.props.google) { + var google = this.props.google; + + var maps = google.maps; + + var mapRef = this.mapRef.current; + var node = _reactDom2.default.findDOMNode(mapRef); + var curr = this.state.currentLocation; + var center = new maps.LatLng(curr.lat, curr.lng); + + var mapTypeIds = this.props.google.maps.MapTypeId || {}; + var mapTypeFromProps = String(this.props.mapType).toUpperCase(); + + var mapConfig = Object.assign({}, { + mapTypeId: mapTypeIds[mapTypeFromProps], + center: center, + zoom: this.props.zoom, + maxZoom: this.props.maxZoom, + minZoom: this.props.minZoom, + clickableIcons: !!this.props.clickableIcons, + disableDefaultUI: this.props.disableDefaultUI, + zoomControl: this.props.zoomControl, + zoomControlOptions: this.props.zoomControlOptions, + mapTypeControl: this.props.mapTypeControl, + mapTypeControlOptions: this.props.mapTypeControlOptions, + scaleControl: this.props.scaleControl, + streetViewControl: this.props.streetViewControl, + streetViewControlOptions: this.props.streetViewControlOptions, + panControl: this.props.panControl, + rotateControl: this.props.rotateControl, + fullscreenControl: this.props.fullscreenControl, + scrollwheel: this.props.scrollwheel, + draggable: this.props.draggable, + draggableCursor: this.props.draggableCursor, + keyboardShortcuts: this.props.keyboardShortcuts, + disableDoubleClickZoom: this.props.disableDoubleClickZoom, + noClear: this.props.noClear, + styles: this.props.styles, + gestureHandling: this.props.gestureHandling + }); + + Object.keys(mapConfig).forEach(function (key) { + // Allow to configure mapConfig with 'false' + if (mapConfig[key] === null) { + delete mapConfig[key]; + } + }); + + this.map = new maps.Map(node, mapConfig); + + evtNames.forEach(function (e) { + _this4.listeners[e] = _this4.map.addListener(e, _this4.handleEvent(e)); + }); + maps.event.trigger(this.map, 'ready'); + this.forceUpdate(); + } + } + }, { + key: 'handleEvent', + value: function handleEvent(evtName) { + var _this5 = this; + + var timeout = void 0; + var handlerName = 'on' + (0, _String.camelize)(evtName); + + return function (e) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + timeout = setTimeout(function () { + if (_this5.props[handlerName]) { + _this5.props[handlerName](_this5.props, _this5.map, e); + } + }, 0); + }; + } + }, { + key: 'recenterMap', + value: function recenterMap() { + var map = this.map; + + var google = this.props.google; + + + if (!google) return; + var maps = google.maps; + + if (map) { + var center = this.state.currentLocation; + if (!(center instanceof google.maps.LatLng)) { + center = new google.maps.LatLng(center.lat, center.lng); + } + // map.panTo(center) + map.setCenter(center); + maps.event.trigger(map, 'recenter'); + } + } + }, { + key: 'restyleMap', + value: function restyleMap() { + if (this.map) { + var google = this.props.google; + + google.maps.event.trigger(this.map, 'resize'); + } + } + }, { + key: 'renderChildren', + value: function renderChildren() { + var _this6 = this; + + var children = this.props.children; + + + if (!children) return; + + return _react2.default.Children.map(children, function (c) { + if (!c) return; + return _react2.default.cloneElement(c, { + map: _this6.map, + google: _this6.props.google, + mapCenter: _this6.state.currentLocation + }); + }); + } + }, { + key: 'render', + value: function render() { + var style = Object.assign({}, mapStyles.map, this.props.style, { + display: this.props.visible ? 'inherit' : 'none' + }); + + var containerStyles = Object.assign({}, mapStyles.container, this.props.containerStyle); + + return _react2.default.createElement( + 'div', + { style: containerStyles, className: this.props.className }, + _react2.default.createElement( + 'div', + { style: style, ref: this.mapRef }, + 'Loading map...' + ), + this.renderChildren() + ); + } + }]); + + return Map; + }(_react2.default.Component); + + Map.propTypes = { + google: _propTypes2.default.object, + zoom: _propTypes2.default.number, + centerAroundCurrentLocation: _propTypes2.default.bool, + center: _propTypes2.default.object, + initialCenter: _propTypes2.default.object, + className: _propTypes2.default.string, + style: _propTypes2.default.object, + containerStyle: _propTypes2.default.object, + visible: _propTypes2.default.bool, + mapType: _propTypes2.default.string, + maxZoom: _propTypes2.default.number, + minZoom: _propTypes2.default.number, + clickableIcons: _propTypes2.default.bool, + disableDefaultUI: _propTypes2.default.bool, + zoomControl: _propTypes2.default.bool, + zoomControlOptions: _propTypes2.default.object, + mapTypeControl: _propTypes2.default.bool, + mapTypeControlOptions: _propTypes2.default.bool, + scaleControl: _propTypes2.default.bool, + streetViewControl: _propTypes2.default.bool, + streetViewControlOptions: _propTypes2.default.object, + panControl: _propTypes2.default.bool, + rotateControl: _propTypes2.default.bool, + fullscreenControl: _propTypes2.default.bool, + scrollwheel: _propTypes2.default.bool, + draggable: _propTypes2.default.bool, + draggableCursor: _propTypes2.default.string, + keyboardShortcuts: _propTypes2.default.bool, + disableDoubleClickZoom: _propTypes2.default.bool, + noClear: _propTypes2.default.bool, + styles: _propTypes2.default.array, + gestureHandling: _propTypes2.default.string, + bounds: _propTypes2.default.object + }; + + evtNames.forEach(function (e) { + return Map.propTypes[(0, _String.camelize)(e)] = _propTypes2.default.func; + }); + + Map.defaultProps = { + zoom: 14, + initialCenter: { + lat: 37.774929, + lng: -122.419416 + }, + center: {}, + centerAroundCurrentLocation: false, + style: {}, + containerStyle: {}, + visible: true + }; + + exports.default = Map; +}); \ No newline at end of file diff --git a/dist/lib/GoogleApi.js b/dist/lib/GoogleApi.js new file mode 100644 index 00000000..b0329afb --- /dev/null +++ b/dist/lib/GoogleApi.js @@ -0,0 +1,69 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.GoogleApi = mod.exports; + } +})(this, function (exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var GoogleApi = exports.GoogleApi = function GoogleApi(opts) { + opts = opts || {}; + + if (!opts.hasOwnProperty('apiKey')) { + throw new Error('You must pass an apiKey to use GoogleApi'); + } + + var apiKey = opts.apiKey; + var libraries = opts.libraries || ['places']; + var client = opts.client; + var URL = opts.url || 'https://maps.googleapis.com/maps/api/js'; + + var googleVersion = opts.version || '3.31'; + + var script = null; + var google = typeof window !== 'undefined' && window.google || null; + var loading = false; + var channel = null; + var language = opts.language; + var region = opts.region || null; + + var onLoadEvents = []; + + var url = function url() { + var url = URL; + var params = { + key: apiKey, + callback: 'CALLBACK_NAME', + libraries: libraries.join(','), + client: client, + v: googleVersion, + channel: channel, + language: language, + region: region, + onerror: 'ERROR_FUNCTION' + }; + + var paramStr = Object.keys(params).filter(function (k) { + return !!params[k]; + }).map(function (k) { + return k + '=' + params[k]; + }).join('&'); + + return url + '?' + paramStr; + }; + + return url(); + }; + + exports.default = GoogleApi; +}); \ No newline at end of file diff --git a/dist/lib/ScriptCache.js b/dist/lib/ScriptCache.js new file mode 100644 index 00000000..34086fdf --- /dev/null +++ b/dist/lib/ScriptCache.js @@ -0,0 +1,156 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports', './windowOrGlobal'], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require('./windowOrGlobal')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, global.windowOrGlobal); + global.ScriptCache = mod.exports; + } +})(this, function (exports, window) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var counter = 0; + var scriptMap = typeof window !== 'undefined' && window._scriptMap || new Map(); + var ScriptCache = exports.ScriptCache = function (global) { + global._scriptMap = global._scriptMap || scriptMap; + return function ScriptCache(scripts) { + var Cache = {}; + + Cache._onLoad = function (key) { + return function (cb) { + var registered = true; + + function unregister() { + registered = false; + } + + var stored = scriptMap.get(key); + + if (stored) { + stored.promise.then(function () { + if (registered) { + stored.error ? cb(stored.error) : cb(null, stored); + } + + return stored; + }).catch(function (error) { + return cb(error); + }); + } else { + // TODO: + } + + return unregister; + }; + }; + + Cache._scriptTag = function (key, src) { + if (!scriptMap.has(key)) { + // Server side rendering environments don't always have access to the `document` global. + // In these cases, we're not going to be able to return a script tag, so just return null. + if (typeof document === 'undefined') return null; + + var tag = document.createElement('script'); + var promise = new Promise(function (resolve, reject) { + var body = document.getElementsByTagName('body')[0]; + + tag.type = 'text/javascript'; + tag.async = false; // Load in order + + var cbName = 'loaderCB' + counter++ + Date.now(); + var cb = void 0; + + var handleResult = function handleResult(state) { + return function (evt) { + var stored = scriptMap.get(key); + if (state === 'loaded') { + stored.resolved = true; + resolve(src); + // stored.handlers.forEach(h => h.call(null, stored)) + // stored.handlers = [] + } else if (state === 'error') { + stored.errored = true; + // stored.handlers.forEach(h => h.call(null, stored)) + // stored.handlers = []; + reject(evt); + } + stored.loaded = true; + + cleanup(); + }; + }; + + var cleanup = function cleanup() { + if (global[cbName] && typeof global[cbName] === 'function') { + global[cbName] = null; + delete global[cbName]; + } + }; + + tag.onload = handleResult('loaded'); + tag.onerror = handleResult('error'); + tag.onreadystatechange = function () { + handleResult(tag.readyState); + }; + + // Pick off callback, if there is one + if (src.match(/callback=CALLBACK_NAME/)) { + src = src.replace(/(callback=)[^\&]+/, '$1' + cbName); + cb = window[cbName] = tag.onload; + } else { + tag.addEventListener('load', tag.onload); + } + tag.addEventListener('error', tag.onerror); + + tag.src = src; + body.appendChild(tag); + + return tag; + }); + var initialState = { + loaded: false, + error: false, + promise: promise, + tag: tag + }; + scriptMap.set(key, initialState); + } + return scriptMap.get(key).tag; + }; + + // let scriptTags = document.querySelectorAll('script') + // + // NodeList.prototype.filter = Array.prototype.filter; + // NodeList.prototype.map = Array.prototype.map; + // const initialScripts = scriptTags + // .filter(s => !!s.src) + // .map(s => s.src.split('?')[0]) + // .reduce((memo, script) => { + // memo[script] = script; + // return memo; + // }, {}); + + Object.keys(scripts).forEach(function (key) { + var script = scripts[key]; + + var tag = window._scriptMap.has(key) ? window._scriptMap.get(key).tag : Cache._scriptTag(key, script); + + Cache[key] = { + tag: tag, + onLoad: Cache._onLoad(key) + }; + }); + + return Cache; + }; + }(window); + + exports.default = ScriptCache; +}); \ No newline at end of file diff --git a/dist/lib/String.js b/dist/lib/String.js new file mode 100644 index 00000000..dd960e4e --- /dev/null +++ b/dist/lib/String.js @@ -0,0 +1,24 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.String = mod.exports; + } +})(this, function (exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + var camelize = exports.camelize = function camelize(str) { + return str.split('_').map(function (word) { + return word.charAt(0).toUpperCase() + word.slice(1); + }).join(''); + }; +}); \ No newline at end of file diff --git a/dist/lib/areBoundsEqual.js b/dist/lib/areBoundsEqual.js new file mode 100644 index 00000000..0faf76f2 --- /dev/null +++ b/dist/lib/areBoundsEqual.js @@ -0,0 +1,82 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.areBoundsEqual = mod.exports; + } +})(this, function (exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + /** + * Compares two bound objects. + */ + + var areBoundsEqual = exports.areBoundsEqual = function areBoundsEqual(boundA, boundB) { + if (boundA === boundB) { + return true; + } + if (!(boundA instanceof Object) || !(boundB instanceof Object)) { + return false; + } + if (Object.keys(boundA).length !== Object.keys(boundB).length) { + return false; + } + if (!areValidBounds(boundA) || !areValidBounds(boundB)) { + return false; + } + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = Object.keys(boundA)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var key = _step.value; + + if (boundA[key] !== boundB[key]) { + return false; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return true; + }; + + /** + * Helper that checks whether an array consists of objects + * with lat and lng properties + * @param {object} elem the element to check + * @returns {boolean} whether or not it's valid + */ + var areValidBounds = function areValidBounds(elem) { + return elem !== null && (typeof elem === 'undefined' ? 'undefined' : _typeof(elem)) === 'object' && elem.hasOwnProperty('north') && elem.hasOwnProperty('south') && elem.hasOwnProperty('east') && elem.hasOwnProperty('west'); + }; +}); \ No newline at end of file diff --git a/dist/lib/arePathsEqual.js b/dist/lib/arePathsEqual.js new file mode 100644 index 00000000..7e4535dc --- /dev/null +++ b/dist/lib/arePathsEqual.js @@ -0,0 +1,63 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.arePathsEqual = mod.exports; + } +})(this, function (exports) { + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + /** + * Compares two path arrays of LatLng objects. + */ + + var arePathsEqual = exports.arePathsEqual = function arePathsEqual(pathA, pathB) { + if (pathA === pathB) { + return true; + } + if (!Array.isArray(pathA) || !Array.isArray(pathB)) { + return false; + } + if (pathA.length !== pathB.length) { + return false; + } + for (var i = 0; i < pathA.length; ++i) { + if (pathA[i] === pathB[i]) { + continue; + } + if (!isValidLatLng(pathA[i]) || !isValidLatLng(pathB[i])) { + return false; + } + if (pathB[i].lat !== pathA[i].lat || pathB[i].lng !== pathA[i].lng) { + return false; + } + } + return true; + }; + + /** + * Helper that checks whether an array consists of objects + * with lat and lng properties + * @param {object} elem the element to check + * @returns {boolean} whether or not it's valid + */ + var isValidLatLng = function isValidLatLng(elem) { + return elem !== null && (typeof elem === 'undefined' ? 'undefined' : _typeof(elem)) === 'object' && elem.hasOwnProperty('lat') && elem.hasOwnProperty('lng'); + }; +}); \ No newline at end of file diff --git a/dist/lib/cancelablePromise.js b/dist/lib/cancelablePromise.js new file mode 100644 index 00000000..63648a77 --- /dev/null +++ b/dist/lib/cancelablePromise.js @@ -0,0 +1,40 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.cancelablePromise = mod.exports; + } +})(this, function (exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + // https://facebook.github.io/react/blog/2015/12/16/ismounted-antipattern.html + + var makeCancelable = exports.makeCancelable = function makeCancelable(promise) { + var hasCanceled_ = false; + + var wrappedPromise = new Promise(function (resolve, reject) { + promise.then(function (val) { + return hasCanceled_ ? reject({ isCanceled: true }) : resolve(val); + }); + promise.catch(function (error) { + return hasCanceled_ ? reject({ isCanceled: true }) : reject(error); + }); + }); + + return { + promise: wrappedPromise, + cancel: function cancel() { + hasCanceled_ = true; + } + }; + }; +}); \ No newline at end of file diff --git a/dist/lib/windowOrGlobal.js b/dist/lib/windowOrGlobal.js new file mode 100644 index 00000000..c48e5f54 --- /dev/null +++ b/dist/lib/windowOrGlobal.js @@ -0,0 +1,23 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['module'], factory); + } else if (typeof exports !== "undefined") { + factory(module); + } else { + var mod = { + exports: {} + }; + factory(mod); + global.windowOrGlobal = mod.exports; + } +})(this, function (module) { + 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + module.exports = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self.self === self && self || (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global.global === global && global || undefined; +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e73466ad..2a072954 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,12 @@ { "name": "google-maps-react", - "version": "2.0.6", + "version": "2.0.7", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "2.0.6", + "name": "google-maps-react", + "version": "2.0.7", "license": "MIT", "devDependencies": { "@types/googlemaps": "^3", @@ -3682,6 +3683,7 @@ "node_modules/fsevents/node_modules/abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "inBundle": true, "license": "ISC", @@ -3690,6 +3692,7 @@ "node_modules/fsevents/node_modules/ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "inBundle": true, "license": "MIT", @@ -3702,6 +3705,7 @@ "node_modules/fsevents/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "inBundle": true, "license": "MIT", @@ -3732,6 +3736,7 @@ "node_modules/fsevents/node_modules/asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true, "inBundle": true, "license": "MIT", @@ -3740,6 +3745,7 @@ "node_modules/fsevents/node_modules/assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true, "inBundle": true, "license": "MIT", @@ -3751,6 +3757,7 @@ "node_modules/fsevents/node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "inBundle": true, "license": "MIT", @@ -3759,6 +3766,7 @@ "node_modules/fsevents/node_modules/aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -3770,6 +3778,7 @@ "node_modules/fsevents/node_modules/aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true, "inBundle": true, "license": "MIT", @@ -3785,6 +3794,7 @@ "node_modules/fsevents/node_modules/bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -3810,6 +3820,7 @@ "node_modules/fsevents/node_modules/boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -3842,6 +3853,7 @@ "node_modules/fsevents/node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -3850,6 +3862,7 @@ "node_modules/fsevents/node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, "inBundle": true, "license": "MIT", @@ -3862,6 +3875,7 @@ "node_modules/fsevents/node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "inBundle": true, "license": "MIT", @@ -3873,6 +3887,7 @@ "node_modules/fsevents/node_modules/combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "inBundle": true, "license": "MIT", @@ -3887,6 +3902,7 @@ "node_modules/fsevents/node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "inBundle": true, "license": "MIT", @@ -3903,6 +3919,7 @@ "node_modules/fsevents/node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "inBundle": true, "license": "MIT", @@ -3911,6 +3928,7 @@ "node_modules/fsevents/node_modules/cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -3925,6 +3943,7 @@ "node_modules/fsevents/node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "inBundle": true, "license": "MIT", @@ -3938,6 +3957,8 @@ }, "node_modules/fsevents/node_modules/dashdash/node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "inBundle": true, "license": "MIT", @@ -3960,6 +3981,7 @@ "node_modules/fsevents/node_modules/deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true, "inBundle": true, "license": "MIT", @@ -3972,6 +3994,7 @@ "node_modules/fsevents/node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true, "inBundle": true, "license": "MIT", @@ -3991,6 +4014,7 @@ "node_modules/fsevents/node_modules/ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "inBundle": true, "license": "MIT", @@ -4002,6 +4026,7 @@ "node_modules/fsevents/node_modules/extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true, "inBundle": true, "license": "MIT", @@ -4020,6 +4045,7 @@ "node_modules/fsevents/node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -4031,6 +4057,7 @@ "node_modules/fsevents/node_modules/form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "inBundle": true, "license": "MIT", @@ -4047,6 +4074,7 @@ "node_modules/fsevents/node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "inBundle": true, "license": "ISC", @@ -4103,6 +4131,7 @@ "node_modules/fsevents/node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "inBundle": true, "license": "MIT", @@ -4113,6 +4142,8 @@ }, "node_modules/fsevents/node_modules/getpass/node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "inBundle": true, "license": "MIT", @@ -4124,6 +4155,7 @@ "node_modules/fsevents/node_modules/glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -4143,6 +4175,7 @@ "node_modules/fsevents/node_modules/graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true, "inBundle": true, "license": "ISC", @@ -4154,6 +4187,7 @@ "node_modules/fsevents/node_modules/har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true, "inBundle": true, "license": "ISC", @@ -4165,6 +4199,7 @@ "node_modules/fsevents/node_modules/har-validator": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "inBundle": true, "license": "ISC", @@ -4188,6 +4223,7 @@ "node_modules/fsevents/node_modules/hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4205,6 +4241,7 @@ "node_modules/fsevents/node_modules/hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4216,6 +4253,7 @@ "node_modules/fsevents/node_modules/http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "inBundle": true, "license": "MIT", @@ -4233,6 +4271,7 @@ "node_modules/fsevents/node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "inBundle": true, "license": "ISC", @@ -4245,6 +4284,7 @@ "node_modules/fsevents/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true, "inBundle": true, "license": "ISC", @@ -4253,6 +4293,7 @@ "node_modules/fsevents/node_modules/ini": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true, "inBundle": true, "license": "ISC", @@ -4264,6 +4305,7 @@ "node_modules/fsevents/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "inBundle": true, "license": "MIT", @@ -4278,6 +4320,7 @@ "node_modules/fsevents/node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true, "inBundle": true, "license": "MIT", @@ -4286,6 +4329,7 @@ "node_modules/fsevents/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "inBundle": true, "license": "MIT", @@ -4294,6 +4338,7 @@ "node_modules/fsevents/node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true, "inBundle": true, "license": "MIT", @@ -4312,6 +4357,7 @@ "node_modules/fsevents/node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "inBundle": true, "license": "MIT", @@ -4320,6 +4366,7 @@ "node_modules/fsevents/node_modules/json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true, "inBundle": true, "optional": true @@ -4327,6 +4374,7 @@ "node_modules/fsevents/node_modules/json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "inBundle": true, "license": "MIT", @@ -4338,6 +4386,7 @@ "node_modules/fsevents/node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true, "inBundle": true, "license": "ISC", @@ -4346,6 +4395,7 @@ "node_modules/fsevents/node_modules/jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "inBundle": true, "license": "Public Domain", @@ -4370,6 +4420,8 @@ }, "node_modules/fsevents/node_modules/jsprim/node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "inBundle": true, "license": "MIT", @@ -4404,6 +4456,7 @@ "node_modules/fsevents/node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "inBundle": true, "license": "ISC", @@ -4418,6 +4471,7 @@ "node_modules/fsevents/node_modules/minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "inBundle": true, "license": "MIT", @@ -4426,6 +4480,7 @@ "node_modules/fsevents/node_modules/mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "inBundle": true, "license": "MIT", @@ -4440,6 +4495,7 @@ "node_modules/fsevents/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "inBundle": true, "license": "MIT", @@ -4498,6 +4554,7 @@ "node_modules/fsevents/node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "inBundle": true, "license": "MIT", @@ -4509,6 +4566,7 @@ "node_modules/fsevents/node_modules/oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -4520,6 +4578,7 @@ "node_modules/fsevents/node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "inBundle": true, "license": "MIT", @@ -4531,6 +4590,7 @@ "node_modules/fsevents/node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "inBundle": true, "license": "ISC", @@ -4542,6 +4602,7 @@ "node_modules/fsevents/node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "inBundle": true, "license": "MIT", @@ -4576,6 +4637,7 @@ "node_modules/fsevents/node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "inBundle": true, "license": "MIT", @@ -4587,6 +4649,7 @@ "node_modules/fsevents/node_modules/performance-now": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true, "inBundle": true, "license": "MIT", @@ -4595,6 +4658,7 @@ "node_modules/fsevents/node_modules/process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true, "inBundle": true, "license": "MIT", @@ -4603,6 +4667,7 @@ "node_modules/fsevents/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "inBundle": true, "license": "MIT", @@ -4611,6 +4676,7 @@ "node_modules/fsevents/node_modules/qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4638,6 +4704,8 @@ }, "node_modules/fsevents/node_modules/rc/node_modules/minimist": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "inBundle": true, "license": "MIT", @@ -4736,6 +4804,7 @@ "node_modules/fsevents/node_modules/signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "inBundle": true, "license": "ISC", @@ -4744,6 +4813,7 @@ "node_modules/fsevents/node_modules/sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "inBundle": true, "optional": true, @@ -4784,6 +4854,8 @@ }, "node_modules/fsevents/node_modules/sshpk/node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "inBundle": true, "license": "MIT", @@ -4805,6 +4877,7 @@ "node_modules/fsevents/node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "inBundle": true, "license": "MIT", @@ -4821,6 +4894,7 @@ "node_modules/fsevents/node_modules/stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "inBundle": true, "license": "MIT", @@ -4829,6 +4903,7 @@ "node_modules/fsevents/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "inBundle": true, "license": "MIT", @@ -4843,6 +4918,7 @@ "node_modules/fsevents/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "inBundle": true, "license": "MIT", @@ -4885,6 +4961,7 @@ "node_modules/fsevents/node_modules/tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -4899,6 +4976,7 @@ "node_modules/fsevents/node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -4913,6 +4991,7 @@ "node_modules/fsevents/node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "inBundle": true, "license": "Unlicense", @@ -4932,6 +5011,7 @@ "node_modules/fsevents/node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "inBundle": true, "license": "MIT", @@ -4974,6 +5054,7 @@ "node_modules/fsevents/node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "inBundle": true, "license": "ISC", @@ -13572,6 +13653,7 @@ "abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "bundled": true, "dev": true, "optional": true @@ -13579,6 +13661,7 @@ "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "bundled": true, "dev": true, "optional": true, @@ -13590,6 +13673,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "bundled": true, "dev": true, "optional": true @@ -13614,6 +13698,7 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "bundled": true, "dev": true, "optional": true @@ -13621,6 +13706,7 @@ "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "bundled": true, "dev": true, "optional": true @@ -13628,6 +13714,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "bundled": true, "dev": true, "optional": true @@ -13635,6 +13722,7 @@ "aws-sign2": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "bundled": true, "dev": true, "optional": true @@ -13642,6 +13730,7 @@ "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "bundled": true, "dev": true, "optional": true @@ -13655,6 +13744,7 @@ "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "bundled": true, "dev": true, "optional": true, @@ -13675,6 +13765,7 @@ "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "bundled": true, "dev": true, "optional": true, @@ -13701,6 +13792,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "bundled": true, "dev": true, "optional": true @@ -13708,6 +13800,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "bundled": true, "dev": true, "optional": true @@ -13715,6 +13808,7 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "bundled": true, "dev": true, "optional": true @@ -13722,6 +13816,7 @@ "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "bundled": true, "dev": true, "optional": true, @@ -13732,6 +13827,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "bundled": true, "dev": true, "optional": true @@ -13746,6 +13842,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "bundled": true, "dev": true, "optional": true @@ -13753,6 +13850,7 @@ "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "bundled": true, "dev": true, "optional": true, @@ -13763,6 +13861,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "bundled": true, "dev": true, "optional": true, @@ -13772,6 +13871,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "bundled": true, "dev": true, "optional": true @@ -13791,6 +13892,7 @@ "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "bundled": true, "dev": true, "optional": true @@ -13798,6 +13900,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "bundled": true, "dev": true, "optional": true @@ -13812,6 +13915,7 @@ "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "bundled": true, "dev": true, "optional": true, @@ -13822,6 +13926,7 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "bundled": true, "dev": true, "optional": true @@ -13836,6 +13941,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "bundled": true, "dev": true, "optional": true @@ -13843,6 +13949,7 @@ "form-data": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "bundled": true, "dev": true, "optional": true, @@ -13855,6 +13962,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "bundled": true, "dev": true, "optional": true @@ -13904,6 +14012,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "bundled": true, "dev": true, "optional": true, @@ -13913,6 +14022,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "bundled": true, "dev": true, "optional": true @@ -13922,6 +14033,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "bundled": true, "dev": true, "optional": true, @@ -13937,6 +14049,7 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "bundled": true, "dev": true, "optional": true @@ -13944,6 +14057,7 @@ "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "bundled": true, "dev": true, "optional": true @@ -13951,6 +14065,7 @@ "har-validator": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "bundled": true, "dev": true, "optional": true, @@ -13969,6 +14084,7 @@ "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "bundled": true, "dev": true, "optional": true, @@ -13982,6 +14098,7 @@ "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "bundled": true, "dev": true, "optional": true @@ -13989,6 +14106,7 @@ "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "bundled": true, "dev": true, "optional": true, @@ -14001,6 +14119,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "bundled": true, "dev": true, "optional": true, @@ -14012,6 +14131,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "bundled": true, "dev": true, "optional": true @@ -14019,6 +14139,7 @@ "ini": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "bundled": true, "dev": true, "optional": true @@ -14026,6 +14147,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "bundled": true, "dev": true, "optional": true, @@ -14036,6 +14158,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "bundled": true, "dev": true, "optional": true @@ -14043,6 +14166,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "bundled": true, "dev": true, "optional": true @@ -14050,6 +14174,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "bundled": true, "dev": true, "optional": true @@ -14066,6 +14191,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "bundled": true, "dev": true, "optional": true @@ -14073,6 +14199,7 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "bundled": true, "dev": true, "optional": true @@ -14080,6 +14207,7 @@ "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "bundled": true, "dev": true, "optional": true, @@ -14090,6 +14218,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "bundled": true, "dev": true, "optional": true @@ -14097,6 +14226,7 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "bundled": true, "dev": true, "optional": true @@ -14116,6 +14246,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "bundled": true, "dev": true, "optional": true @@ -14140,6 +14272,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "bundled": true, "dev": true, "optional": true, @@ -14150,6 +14283,7 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "bundled": true, "dev": true, "optional": true @@ -14157,6 +14291,7 @@ "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "bundled": true, "dev": true, "optional": true, @@ -14167,6 +14302,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "bundled": true, "dev": true, "optional": true @@ -14215,6 +14351,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "bundled": true, "dev": true, "optional": true @@ -14222,6 +14359,7 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "bundled": true, "dev": true, "optional": true @@ -14229,6 +14367,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "bundled": true, "dev": true, "optional": true @@ -14236,6 +14375,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "bundled": true, "dev": true, "optional": true, @@ -14246,6 +14386,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "bundled": true, "dev": true, "optional": true @@ -14271,6 +14412,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "bundled": true, "dev": true, "optional": true @@ -14278,6 +14420,7 @@ "performance-now": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "bundled": true, "dev": true, "optional": true @@ -14285,6 +14428,7 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "bundled": true, "dev": true, "optional": true @@ -14292,6 +14436,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "bundled": true, "dev": true, "optional": true @@ -14299,6 +14444,7 @@ "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "bundled": true, "dev": true, "optional": true @@ -14318,6 +14464,8 @@ "dependencies": { "minimist": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "bundled": true, "dev": true, "optional": true @@ -14402,6 +14550,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "bundled": true, "dev": true, "optional": true @@ -14409,6 +14558,7 @@ "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "bundled": true, "dev": true, "optional": true, @@ -14435,6 +14585,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "bundled": true, "dev": true, "optional": true @@ -14453,6 +14605,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "bundled": true, "dev": true, "optional": true, @@ -14465,6 +14618,7 @@ "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "bundled": true, "dev": true, "optional": true @@ -14472,6 +14626,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "bundled": true, "dev": true, "optional": true, @@ -14482,6 +14637,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "bundled": true, "dev": true, "optional": true @@ -14518,6 +14674,7 @@ "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "bundled": true, "dev": true, "optional": true, @@ -14528,6 +14685,7 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "bundled": true, "dev": true, "optional": true, @@ -14538,6 +14696,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "bundled": true, "dev": true, "optional": true @@ -14552,6 +14711,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "bundled": true, "dev": true, "optional": true @@ -14585,6 +14745,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "bundled": true, "dev": true, "optional": true diff --git a/package.json b/package.json index e884bcf5..f60ed341 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,6 @@ "types": "dist/index.d.ts", "sideEffects": false, "scripts": { - "prepublish": "./scripts/prepublish.sh", - "preversion": ". ./scripts/prepublish.sh", "dev": "NODE_ENV=development ./node_modules/hjs-webpack/bin/hjs-dev-server.js", "build": "NODE_ENV=production webpack", "publish_pages": "gh-pages -d public/", diff --git a/src/components/Polygon.js b/src/components/Polygon.js index 46a08d7b..589f3dd2 100644 --- a/src/components/Polygon.js +++ b/src/components/Polygon.js @@ -26,6 +26,7 @@ export class Polygon extends React.Component { componentDidUpdate(prevProps) { if ( + this.propsChanged(prevProps) || this.props.map !== prevProps.map || !arePathsEqual(this.props.paths, prevProps.paths) ) { @@ -42,6 +43,12 @@ export class Polygon extends React.Component { } } + propsChanged(newProps) { + return Object.keys(Polygon.propTypes).some(key => ( + this.props[key] !== newProps[key] + )); + }; + renderPolygon() { const { map, diff --git a/src/components/Polyline.js b/src/components/Polyline.js index 3a1886a5..d5b87fed 100644 --- a/src/components/Polyline.js +++ b/src/components/Polyline.js @@ -27,6 +27,7 @@ export class Polyline extends React.Component { componentDidUpdate(prevProps) { if ( + this.propsChanged(prevProps) || this.props.map !== prevProps.map || !arePathsEqual(this.props.path, prevProps.path) ) { @@ -43,6 +44,12 @@ export class Polyline extends React.Component { } } + propsChanged(newProps) { + return Object.keys(Polyline.propTypes).some(key => ( + this.props[key] !== newProps[key] + )); + }; + renderPolyline() { const { map,