@elastic/eui
Version:
Elastic UI Component Library
50 lines (48 loc) • 1.83 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EuiI18nNumber = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _context = require("../context");
var _react2 = require("@emotion/react");
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
var defaultFormatter = new Intl.NumberFormat('en');
function defaultFormatNumber(value) {
return defaultFormatter.format(value);
}
function hasValues(x) {
return x.values != null;
}
var EuiI18nNumber = exports.EuiI18nNumber = function EuiI18nNumber(props) {
return (0, _react2.jsx)(_context.EuiI18nConsumer, null, function (i18nConfig) {
var formatNumber = i18nConfig.formatNumber || defaultFormatNumber;
if (hasValues(props)) {
return props.children(props.values.map(function (value) {
return formatNumber(value);
}));
}
var formattedValue = (formatNumber || defaultFormatNumber)(props.value);
if (props.children) {
return props.children(formattedValue);
} else {
return formattedValue;
}
});
};
EuiI18nNumber.propTypes = {
value: _propTypes.default.number,
/**
* ReactNode to render as this component's content
*/
children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.func.isRequired]),
values: _propTypes.default.arrayOf(_propTypes.default.number.isRequired)
};