@mapbox/react-map-gl
Version:
A React wrapper for MapboxGL-js and overlay API.
146 lines (122 loc) • 5.47 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = require("react");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _baseControl = _interopRequireDefault(require("./base-control"));
var _mapState = _interopRequireDefault(require("../utils/map-state"));
var _mapController = require("../utils/map-controller");
var _deprecateWarn = _interopRequireDefault(require("../utils/deprecate-warn"));
var propTypes = Object.assign({}, _baseControl["default"].propTypes, {
// Custom className
className: _propTypes["default"].string,
// Callbacks fired when the user interacted with the map. The object passed to the callbacks
// contains viewport properties such as `longitude`, `latitude`, `zoom` etc.
onViewStateChange: _propTypes["default"].func,
onViewportChange: _propTypes["default"].func,
// Show/hide compass button
showCompass: _propTypes["default"].bool,
// Show/hide zoom buttons
showZoom: _propTypes["default"].bool
});
var defaultProps = Object.assign({}, _baseControl["default"].defaultProps, {
className: '',
onViewStateChange: function onViewStateChange() {},
onViewportChange: function onViewportChange() {},
showCompass: true,
showZoom: true
});
/*
* PureComponent doesn't update when context changes, so
* implementing our own shouldComponentUpdate here.
*/
var NavigationControl =
/*#__PURE__*/
function (_BaseControl) {
(0, _inherits2["default"])(NavigationControl, _BaseControl);
function NavigationControl(props) {
var _this;
(0, _classCallCheck2["default"])(this, NavigationControl);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(NavigationControl).call(this, props)); // Check for deprecated props
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onZoomIn", function () {
_this._updateViewport({
zoom: _this._context.viewport.zoom + 1
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onZoomOut", function () {
_this._updateViewport({
zoom: _this._context.viewport.zoom - 1
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onResetNorth", function () {
_this._updateViewport({
bearing: 0,
pitch: 0
});
});
(0, _deprecateWarn["default"])(props);
return _this;
}
(0, _createClass2["default"])(NavigationControl, [{
key: "_updateViewport",
value: function _updateViewport(opts) {
var viewport = this._context.viewport;
var mapState = new _mapState["default"](Object.assign({}, viewport, opts));
var viewState = Object.assign({}, mapState.getViewportProps(), _mapController.LINEAR_TRANSITION_PROPS); // Call new style callback
this.props.onViewStateChange({
viewState: viewState
}); // Call old style callback
this.props.onViewportChange(viewState);
}
}, {
key: "_renderCompass",
value: function _renderCompass() {
var bearing = this._context.viewport.bearing;
return (0, _react.createElement)('span', {
className: 'mapboxgl-ctrl-compass-arrow',
style: {
transform: "rotate(".concat(-bearing, "deg)")
}
});
}
}, {
key: "_renderButton",
value: function _renderButton(type, label, callback, children) {
return (0, _react.createElement)('button', {
key: type,
className: "mapboxgl-ctrl-icon mapboxgl-ctrl-".concat(type),
type: 'button',
title: label,
onClick: callback,
children: children
});
}
}, {
key: "_render",
value: function _render() {
var _this$props = this.props,
className = _this$props.className,
showCompass = _this$props.showCompass,
showZoom = _this$props.showZoom;
return (0, _react.createElement)('div', {
className: "mapboxgl-ctrl mapboxgl-ctrl-group ".concat(className),
ref: this._containerRef
}, [showZoom && this._renderButton('zoom-in', 'Zoom In', this._onZoomIn), showZoom && this._renderButton('zoom-out', 'Zoom Out', this._onZoomOut), showCompass && this._renderButton('compass', 'Reset North', this._onResetNorth, this._renderCompass())]);
}
}]);
return NavigationControl;
}(_baseControl["default"]);
exports["default"] = NavigationControl;
(0, _defineProperty2["default"])(NavigationControl, "propTypes", propTypes);
(0, _defineProperty2["default"])(NavigationControl, "defaultProps", defaultProps);
//# sourceMappingURL=navigation-control.js.map