@streetscape.gl/monochrome
Version:
A toolkit of React components for streetscape.gl
117 lines (91 loc) • 4.99 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
import _createClass from "@babel/runtime/helpers/esm/createClass";
import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
import _inherits from "@babel/runtime/helpers/esm/inherits";
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { findNearestValue } from './utils';
import Chart from './chart';
import memoize from '../utils/memoize';
var MetricChart = function (_PureComponent) {
_inherits(MetricChart, _PureComponent);
var _super = _createSuper(MetricChart);
function MetricChart(props) {
var _this;
_classCallCheck(this, MetricChart);
_this = _super.call(this, props);
_defineProperty(_assertThisInitialized(_this), "_getCurrentValues", function (highlightX, data) {
if (!Number.isFinite(highlightX) || !data) {
return null;
}
var getX = _this.props.getX;
var result = {};
for (var key in data) {
if (data.hasOwnProperty(key)) {
result[key] = findNearestValue(data[key], highlightX, getX);
}
}
return result;
});
_defineProperty(_assertThisInitialized(_this), "_onClick", function (evt) {
_this.props.onClick(_this.state.hoveredX, evt);
});
_defineProperty(_assertThisInitialized(_this), "_onNearestX", function (key, value, evt) {
var hoveredValues = _this.state.hoveredValues;
hoveredValues[key] = value;
_this.setState({
isHovered: true,
hoveredX: _this.props.getX(value),
hoveredValues: _objectSpread({}, hoveredValues)
});
_this.props.onNearestX(key, value, evt);
});
_defineProperty(_assertThisInitialized(_this), "_onMouseLeave", function (evt) {
_this.setState({
isHovered: false,
hoveredX: null
});
_this.props.onMouseLeave(evt);
});
_this.state = {
isHovered: false,
hoveredX: null,
hoveredValues: {}
};
_this.getCurrentValues = memoize(_this._getCurrentValues);
return _this;
}
_createClass(MetricChart, [{
key: "render",
value: function render() {
var _this$props = this.props,
highlightX = _this$props.highlightX,
data = _this$props.data;
var _this$state = this.state,
isHovered = _this$state.isHovered,
hoveredValues = _this$state.hoveredValues;
var currentValues = this.getCurrentValues(highlightX, data);
return React.createElement(Chart, _extends({}, this.props, {
onClick: this._onClick,
onNearestX: this._onNearestX,
onMouseLeave: this._onMouseLeave,
highlightValues: isHovered ? hoveredValues : currentValues
}));
}
}]);
return MetricChart;
}(PureComponent);
_defineProperty(MetricChart, "propTypes", Object.assign({
highlightX: PropTypes.number
}, Chart.propTypes));
_defineProperty(MetricChart, "defaultProps", Chart.defaultProps);
export { MetricChart as default };
//# sourceMappingURL=metric-chart.js.map