UNPKG

@hackoregon/component-library

Version:

Official repo for Hack Oregon React component library

149 lines (131 loc) 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = require("prop-types"); var _deck = _interopRequireWildcard(require("deck.gl")); var _centerOfMass = _interopRequireDefault(require("@turf/center-of-mass")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var MapOverlay = function MapOverlay(props) { var id = props.id, viewport = props.viewport, children = props.children, data = props.data, pickable = props.pickable, opacity = props.opacity, filled = props.filled, getFillColor = props.getFillColor, stroked = props.stroked, getLineColor = props.getLineColor, getLineWidth = props.getLineWidth, extruded = props.extruded, getElevation = props.getElevation, circleFieldName = props.circleFieldName, getRadius = props.getRadius, radiusScale = props.radiusScale, autoHighlight = props.autoHighlight, highlightColor = props.highlightColor, onLayerClick = props.onLayerClick, onHover = props.onHover, tooltipInfo = props.tooltipInfo, x = props.x, y = props.y; var tooltip = _react["default"].Children.map(children, function (child) { return _react["default"].cloneElement(child, { tooltipInfo: tooltipInfo, x: x, y: y }); }); var tooltipRender = tooltipInfo && x && y ? tooltip : null; var centroidData = circleFieldName ? data.map(function (d) { return (0, _centerOfMass["default"])(d.geometry, { properties: _objectSpread({}, d.properties) }); }) : []; var radius = circleFieldName ? function (f) { return Math.sqrt(+f.properties[circleFieldName]); } : getRadius || 10; return _react["default"].createElement("div", null, _react["default"].createElement(_deck["default"], _extends({}, viewport, { className: "DeckGL", getCursor: function getCursor() { return "crosshair"; } }), _react["default"].createElement(_deck.GeoJsonLayer, { id: id, className: "GeoJSONMap", pickable: pickable, data: [].concat(_toConsumableArray(data), _toConsumableArray(centroidData)), opacity: opacity, filled: filled, getFillColor: getFillColor, stroked: stroked, getLineColor: getLineColor, getLineWidth: getLineWidth, lineWidthMinPixels: 1, extruded: extruded, getElevation: getElevation, circleFieldName: circleFieldName, getRadius: radius, pointRadiusScale: radiusScale, pointRadiusMinPixels: 1, autoHighlight: autoHighlight, highlightColor: highlightColor, onClick: onLayerClick, onHover: onHover, updateTriggers: { getFillColor: getFillColor, getLineColor: getLineColor, getLineWidth: getLineWidth, getRadius: getRadius } })), tooltipRender); }; MapOverlay.propTypes = { viewport: (0, _propTypes.shape)({}), children: _propTypes.node, id: _propTypes.string, data: (0, _propTypes.arrayOf)((0, _propTypes.shape)({})).isRequired, pickable: _propTypes.bool, opacity: _propTypes.number, filled: _propTypes.bool, getFillColor: (0, _propTypes.oneOfType)([(0, _propTypes.arrayOf)(_propTypes.number), _propTypes.func]), stroked: _propTypes.bool, getLineColor: (0, _propTypes.oneOfType)([(0, _propTypes.arrayOf)(_propTypes.number), _propTypes.func]), getLineWidth: (0, _propTypes.oneOfType)([_propTypes.number, _propTypes.func]), extruded: _propTypes.bool, getElevation: (0, _propTypes.oneOfType)([_propTypes.number, _propTypes.func]), circleFieldName: _propTypes.string, getRadius: (0, _propTypes.oneOfType)([_propTypes.number, _propTypes.func]), radiusScale: _propTypes.number, autoHighlight: _propTypes.bool, highlightColor: (0, _propTypes.arrayOf)(_propTypes.number), onLayerClick: _propTypes.func, onHover: _propTypes.func, tooltipInfo: (0, _propTypes.shape)({}), x: _propTypes.number, y: _propTypes.number }; MapOverlay.defaultProps = { pickable: true, opacity: 0.8, filled: true, getFillColor: [0, 0, 0], stroked: true, getLineColor: [112, 122, 122, 100], getLineWidth: 10, extruded: false, autoHighlight: false }; var _default = MapOverlay; exports["default"] = _default;