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

105 lines
3.0 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.EVENTS_RE = void 0;
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 _react = require("react");
var EVENTS_RE = /^on(.+)$/i;
exports.EVENTS_RE = EVENTS_RE;
var MapEvented = /*#__PURE__*/function (_Component) {
(0, _inheritsLoose2.default)(MapEvented, _Component);
function MapEvented(props) {
var _this;
_this = _Component.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_leafletEvents", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "leafletElement", void 0);
_this._leafletEvents = _this.extractLeafletEvents(props);
return _this;
}
var _proto = MapEvented.prototype;
_proto.componentDidMount = function componentDidMount() {
this.bindLeafletEvents(this._leafletEvents);
};
_proto.componentDidUpdate = function componentDidUpdate(_prevProps) {
this._leafletEvents = this.bindLeafletEvents(this.extractLeafletEvents(this.props), this._leafletEvents);
};
_proto.componentWillUnmount = function componentWillUnmount() {
var _this2 = this;
var el = this.leafletElement;
if (!el) return;
Object.keys(this._leafletEvents).forEach(function (ev) {
el.off(ev, _this2._leafletEvents[ev]);
});
};
_proto.extractLeafletEvents = function extractLeafletEvents(props) {
return Object.keys(props).reduce(function (res, prop) {
if (EVENTS_RE.test(prop)) {
if (props[prop] != null) {
var _key = prop.replace(EVENTS_RE, function (match, p) {
return p.toLowerCase();
});
res[_key] = props[prop];
}
}
return res;
}, {});
};
_proto.bindLeafletEvents = function bindLeafletEvents(next, prev) {
if (next === void 0) {
next = {};
}
if (prev === void 0) {
prev = {};
}
var el = this.leafletElement;
if (el == null || el.on == null) return {};
var diff = (0, _extends2.default)({}, prev);
Object.keys(prev).forEach(function (ev) {
if (next[ev] == null || prev[ev] !== next[ev]) {
delete diff[ev];
el.off(ev, prev[ev]);
}
});
Object.keys(next).forEach(function (ev) {
if (prev[ev] == null || next[ev] !== prev[ev]) {
diff[ev] = next[ev];
el.on(ev, next[ev]);
}
});
return diff;
};
_proto.fireLeafletEvent = function fireLeafletEvent(type, data) {
var el = this.leafletElement;
if (el) el.fire(type, data);
};
return MapEvented;
}(_react.Component);
exports.default = MapEvented;