rc-leaflet
Version:
React Map Components of Leaflet
52 lines (51 loc) • 1.97 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import { PureComponent, Children, isValidElement, cloneElement } from 'react';
import PropTypes from 'prop-types';
import L from 'leaflet';
import { Pixel } from '../../util/PropTypes';
var BaseIcon = /** @class */ (function (_super) {
__extends(BaseIcon, _super);
function BaseIcon() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.state = {
instance: undefined
};
return _this;
}
BaseIcon.prototype.render = function () {
var children = this.props.children;
var icon = this.state.instance;
return icon && children ? Children.map(children, function (child) { return (isValidElement(child) ? cloneElement(child, { icon: icon }) : child); }) : null;
};
BaseIcon.propTypes = {
pane: PropTypes.string,
attribution: PropTypes.string,
iconUrl: PropTypes.string,
iconRetinaUrl: PropTypes.string,
iconSize: Pixel,
iconAnchor: Pixel,
popupAnchor: Pixel,
tooltipAnchor: Pixel,
shadowUrl: PropTypes.string,
shadowRetinaUrl: PropTypes.string,
shadowSize: Pixel,
shadowAnchor: Pixel,
className: PropTypes.string,
layer: PropTypes.instanceOf(L.Marker),
children: PropTypes.node
};
return BaseIcon;
}(PureComponent));
export default BaseIcon;