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

229 lines
7.0 KiB
JavaScript

"use strict";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _extends from "@babel/runtime/helpers/esm/extends";
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import { Control } from 'leaflet';
import React, { cloneElement, Component, Children, Fragment } from 'react';
import { LeafletProvider, withLeaflet } from './context';
import MapControl from './MapControl';
// Abtract class for layer container, extended by BaseLayer and Overlay
export var ControlledLayer = /*#__PURE__*/function (_Component) {
_inheritsLoose(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;
_defineProperty(_assertThisInitialized(_this), "contextValue", void 0);
_defineProperty(_assertThisInitialized(_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.createElement(LeafletProvider, {
value: this.contextValue
}, children) : null;
};
return ControlledLayer;
}(Component);
var BaseLayer = /*#__PURE__*/function (_ControlledLayer) {
_inheritsLoose(BaseLayer, _ControlledLayer);
function BaseLayer(props) {
var _this2;
_this2 = _ControlledLayer.call(this, props) || this;
_defineProperty(_assertThisInitialized(_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 = _extends({}, props.leaflet, {
layerContainer: {
addLayer: _this2.addLayer.bind(_assertThisInitialized(_this2)),
removeLayer: _this2.removeLayer.bind(_assertThisInitialized(_this2))
}
});
return _this2;
}
return BaseLayer;
}(ControlledLayer);
var Overlay = /*#__PURE__*/function (_ControlledLayer2) {
_inheritsLoose(Overlay, _ControlledLayer2);
function Overlay(props) {
var _this3;
_this3 = _ControlledLayer2.call(this, props) || this;
_defineProperty(_assertThisInitialized(_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 = _extends({}, props.leaflet, {
layerContainer: {
addLayer: _this3.addLayer.bind(_assertThisInitialized(_this3)),
removeLayer: _this3.removeLayer.bind(_assertThisInitialized(_this3))
}
});
return _this3;
}
return Overlay;
}(ControlledLayer);
var LayersControl = /*#__PURE__*/function (_MapControl) {
_inheritsLoose(LayersControl, _MapControl);
function LayersControl(props) {
var _this4;
_this4 = _MapControl.call(this, props) || this;
_defineProperty(_assertThisInitialized(_this4), "controlProps", void 0);
_this4.controlProps = {
addBaseLayer: _this4.addBaseLayer.bind(_assertThisInitialized(_this4)),
addOverlay: _this4.addOverlay.bind(_assertThisInitialized(_this4)),
leaflet: props.leaflet,
removeLayer: _this4.removeLayer.bind(_assertThisInitialized(_this4)),
removeLayerControl: _this4.removeLayerControl.bind(_assertThisInitialized(_this4))
};
return _this4;
}
var _proto2 = LayersControl.prototype;
_proto2.createLeafletElement = function createLeafletElement(props) {
var _children = props.children,
options = _objectWithoutPropertiesLoose(props, ["children"]);
return new 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 = Children.map(this.props.children, function (child) {
return child ? /*#__PURE__*/cloneElement(child, _this6.controlProps) : null;
});
return /*#__PURE__*/React.createElement(Fragment, null, children);
};
return LayersControl;
}(MapControl);
var LayersControlExport = withLeaflet(LayersControl);
LayersControlExport.BaseLayer = BaseLayer;
LayersControlExport.Overlay = Overlay;
export default LayersControlExport;