jam-cloud/jam-ui/node_modules/react-leaflet/lib/LayersControl.js

239 lines
7.8 KiB
JavaScript

"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.ControlledLayer = void 0;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _leaflet = require("leaflet");
var _react = _interopRequireWildcard(require("react"));
var _context = require("./context");
var _MapControl2 = _interopRequireDefault(require("./MapControl"));
// Abtract class for layer container, extended by BaseLayer and Overlay
var ControlledLayer = /*#__PURE__*/function (_Component) {
(0, _inheritsLoose2.default)(ControlledLayer, _Component);
function ControlledLayer() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "contextValue", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "layer", void 0);
return _this;
}
var _proto = ControlledLayer.prototype;
_proto.componentDidUpdate = function componentDidUpdate(_ref) {
var checked = _ref.checked;
if (this.props.leaflet.map == null) {
return;
} // Handle dynamically (un)checking the layer => adding/removing from the map
if (this.props.checked === true && (checked == null || checked === false)) {
this.props.leaflet.map.addLayer(this.layer);
} else if (checked === true && (this.props.checked == null || this.props.checked === false)) {
this.props.leaflet.map.removeLayer(this.layer);
}
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.props.removeLayerControl(this.layer);
};
_proto.addLayer = function addLayer() {
throw new Error('Must be implemented in extending class');
};
_proto.removeLayer = function removeLayer(layer) {
this.props.removeLayer(layer);
};
_proto.render = function render() {
var children = this.props.children;
return children ? /*#__PURE__*/_react.default.createElement(_context.LeafletProvider, {
value: this.contextValue
}, children) : null;
};
return ControlledLayer;
}(_react.Component);
exports.ControlledLayer = ControlledLayer;
var BaseLayer = /*#__PURE__*/function (_ControlledLayer) {
(0, _inheritsLoose2.default)(BaseLayer, _ControlledLayer);
function BaseLayer(props) {
var _this2;
_this2 = _ControlledLayer.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "addLayer", function (layer) {
_this2.layer = layer; // Keep layer reference to handle dynamic changes of props
var _this2$props = _this2.props,
addBaseLayer = _this2$props.addBaseLayer,
checked = _this2$props.checked,
name = _this2$props.name;
addBaseLayer(layer, name, checked);
});
_this2.contextValue = (0, _extends2.default)({}, props.leaflet, {
layerContainer: {
addLayer: _this2.addLayer.bind((0, _assertThisInitialized2.default)(_this2)),
removeLayer: _this2.removeLayer.bind((0, _assertThisInitialized2.default)(_this2))
}
});
return _this2;
}
return BaseLayer;
}(ControlledLayer);
var Overlay = /*#__PURE__*/function (_ControlledLayer2) {
(0, _inheritsLoose2.default)(Overlay, _ControlledLayer2);
function Overlay(props) {
var _this3;
_this3 = _ControlledLayer2.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "addLayer", function (layer) {
_this3.layer = layer; // Keep layer reference to handle dynamic changes of props
var _this3$props = _this3.props,
addOverlay = _this3$props.addOverlay,
checked = _this3$props.checked,
name = _this3$props.name;
addOverlay(layer, name, checked);
});
_this3.contextValue = (0, _extends2.default)({}, props.leaflet, {
layerContainer: {
addLayer: _this3.addLayer.bind((0, _assertThisInitialized2.default)(_this3)),
removeLayer: _this3.removeLayer.bind((0, _assertThisInitialized2.default)(_this3))
}
});
return _this3;
}
return Overlay;
}(ControlledLayer);
var LayersControl = /*#__PURE__*/function (_MapControl) {
(0, _inheritsLoose2.default)(LayersControl, _MapControl);
function LayersControl(props) {
var _this4;
_this4 = _MapControl.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this4), "controlProps", void 0);
_this4.controlProps = {
addBaseLayer: _this4.addBaseLayer.bind((0, _assertThisInitialized2.default)(_this4)),
addOverlay: _this4.addOverlay.bind((0, _assertThisInitialized2.default)(_this4)),
leaflet: props.leaflet,
removeLayer: _this4.removeLayer.bind((0, _assertThisInitialized2.default)(_this4)),
removeLayerControl: _this4.removeLayerControl.bind((0, _assertThisInitialized2.default)(_this4))
};
return _this4;
}
var _proto2 = LayersControl.prototype;
_proto2.createLeafletElement = function createLeafletElement(props) {
var _children = props.children,
options = (0, _objectWithoutPropertiesLoose2.default)(props, ["children"]);
return new _leaflet.Control.Layers(undefined, undefined, options);
};
_proto2.updateLeafletElement = function updateLeafletElement(fromProps, toProps) {
_MapControl.prototype.updateLeafletElement.call(this, fromProps, toProps);
if (toProps.collapsed !== fromProps.collapsed) {
if (toProps.collapsed === true) {
this.leafletElement.collapse();
} else {
this.leafletElement.expand();
}
}
};
_proto2.componentWillUnmount = function componentWillUnmount() {
var _this5 = this;
setTimeout(function () {
_MapControl.prototype.componentWillUnmount.call(_this5);
}, 0);
};
_proto2.addBaseLayer = function addBaseLayer(layer, name, checked) {
if (checked === void 0) {
checked = false;
}
if (checked && this.props.leaflet.map != null) {
this.props.leaflet.map.addLayer(layer);
}
this.leafletElement.addBaseLayer(layer, name);
};
_proto2.addOverlay = function addOverlay(layer, name, checked) {
if (checked === void 0) {
checked = false;
}
if (checked && this.props.leaflet.map != null) {
this.props.leaflet.map.addLayer(layer);
}
this.leafletElement.addOverlay(layer, name);
};
_proto2.removeLayer = function removeLayer(layer) {
if (this.props.leaflet.map != null) {
this.props.leaflet.map.removeLayer(layer);
}
};
_proto2.removeLayerControl = function removeLayerControl(layer) {
this.leafletElement.removeLayer(layer);
};
_proto2.render = function render() {
var _this6 = this;
var children = _react.Children.map(this.props.children, function (child) {
return child ? /*#__PURE__*/(0, _react.cloneElement)(child, _this6.controlProps) : null;
});
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, children);
};
return LayersControl;
}(_MapControl2.default);
var LayersControlExport = (0, _context.withLeaflet)(LayersControl);
LayersControlExport.BaseLayer = BaseLayer;
LayersControlExport.Overlay = Overlay;
var _default = LayersControlExport;
exports.default = _default;