text: this.primereact = this.primereact || {};
  this.primereact.inputnumber = (function (exports, React, inputtext, utils, tooltip, ripple) {
    'use strict';
  
    function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
  
    var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
  
    function _arrayLikeToArray(arr, len) {
      if (len == null || len > arr.length) len = arr.length;
  
      for (var i = 0, arr2 = new Array(len); i < len; i++) {
        arr2[i] = arr[i];
      }
  
      return arr2;
    }
  
    function _arrayWithoutHoles(arr) {
      if (Array.isArray(arr)) return _arrayLikeToArray(arr);
    }
  
    function _iterableToArray(iter) {
      if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
    }
  
    function _unsupportedIterableToArray(o, minLen) {
      if (!o) return;
      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
      var n = Object.prototype.toString.call(o).slice(8, -1);
      if (n === "Object" && o.constructor) n = o.constructor.name;
      if (n === "Map" || n === "Set") return Array.from(o);
      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
    }
  
    function _nonIterableSpread() {
      throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
  
    function _toConsumableArray(arr) {
      return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
    }
  
    function _classCallCheck(instance, Constructor) {
      if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
      }
    }
  
    function _defineProperties(target, props) {
      for (var i = 0; i < props.length; i++) {
        var descriptor = props[i];
        descriptor.enumerable = descriptor.enumerable || false;
        descriptor.configurable = true;
        if ("value" in descriptor) descriptor.writable = true;
        Object.defineProperty(target, descriptor.key, descriptor);
      }
    }
  
    function _createClass(Constructor, protoProps, staticProps) {
      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
      if (staticProps) _defineProperties(Constructor, staticProps);
      Object.defineProperty(Constructor, "prototype", {
        writable: false
      });
      return Constructor;
    }
  
    function _assertThisInitialized(self) {
      if (self === void 0) {
        throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      }
  
      return self;
    }
  
    function _setPrototypeOf(o, p) {
      _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
        o.__proto__ = p;
        return o;
      };
  
      return _setPrototypeOf(o, p);
    }
  
    function _inherits(subClass, superClass) {
      if (typeof superClass !== "function" && superClass !== null) {
        throw new TypeError("Super expression must either be null or a function");
      }
  
      subClass.prototype = Object.create(superClass && superClass.prototype, {
        constructor: {
          value: subClass,
          writable: true,
          configurable: true
        }
      });
      Object.defineProperty(subClass, "prototype", {
        writable: false
      });
      if (superClass) _setPrototypeOf(subClass, superClass);
    }
  
    function _typeof(obj) {
      "@babel/helpers - typeof";
  
      return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
        return typeof obj;
      } : function (obj) {
        return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
      }, _typeof(obj);
    }
  
    function _possibleConstructorReturn(self, call) {
      if (call && (_typeof(call) === "object" || typeof call === "function")) {
        return call;
      } else if (call !== void 0) {
        throw new TypeError("Derived constructors may only return object or undefined");
      }
  
      return _assertThisInitialized(self);
    }
  
    function _getPrototypeOf(o) {
      _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
        return o.__proto__ || Object.getPrototypeOf(o);
      };
      return _getPrototypeOf(o);
    }
  
    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;
    }
  
    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; } }
    var InputNumber = /*#__PURE__*/function (_Component) {
      _inherits(InputNumber, _Component);
  
      var _super = _createSuper(InputNumber);
  
      function InputNumber(props) {
        var _this;
  
        _classCallCheck(this, InputNumber);
  
        _this = _super.call(this, props);
        _this.state = {
          focused: false
        };
  
        _this.constructParser();
  
        _this.onInput = _this.onInput.bind(_assertThisInitialized(_this));
        _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_this));
        _this.onInputKeyPress = _this.onInputKeyPress.bind(_assertThisInitialized(_this));
        _this.onInputClick = _this.onInputClick.bind(_assertThisInitialized(_this));
        _this.onInputBlur = _this.onInputBlur.bind(_assertThisInitialized(_this));
        _this.onInputFocus = _this.onInputFocus.bind(_assertThisInitialized(_this));
        _this.onPaste = _this.onPaste.bind(_assertThisInitialized(_this));
        _this.onUpButtonMouseLeave = _this.onUpButtonMouseLeave.bind(_assertThisInitialized(_this));
        _this.onUpButtonMouseDown = _this.onUpButtonMouseDown.bind(_assertThisInitialized(_this));
        _this.onUpButtonMouseUp = _this.onUpButtonMouseUp.bind(_assertThisInitialized(_this));
        _this.onUpButtonKeyDown = _this.onUpButtonKeyDown.bind(_assertThisInitialized(_this));
        _this.onUpButtonKeyUp = _this.onUpButtonKeyUp.bind(_assertThisInitialized(_this));
        _this.onDownButtonMouseLeave = _this.onDownButtonMouseLeave.bind(_assertThisInitialized(_this));
        _this.onDownButtonMouseDown = _this.onDownButtonMouseDown.bind(_assertThisInitialized(_this));
        _this.onDownButtonMouseUp = _this.onDownButtonMouseUp.bind(_assertThisInitialized(_this));
        _this.onDownButtonKeyDown = _this.onDownButtonKeyDown.bind(_assertThisInitialized(_this));
        _this.onDownButtonKeyUp = _this.onDownButtonKeyUp.bind(_assertThisInitialized(_this));
        _this.inputRef = /*#__PURE__*/React.createRef(_this.props.inputRef);
        return _this;
      }
  
      _createClass(InputNumber, [{
        key: "getOptions",
        value: function getOptions() {
          return {
            localeMatcher: this.props.localeMatcher,
            style: this.props.mode,
            currency: this.props.currency,
            currencyDisplay: this.props.currencyDisplay,
            useGrouping: this.props.useGrouping,
            minimumFractionDigits: this.props.minFractionDigits,
            maximumFractionDigits: this.props.maxFractionDigits
          };
        }
      }, {
        key: "constructParser",
        value: function constructParser() {
          this.numberFormat = new Intl.NumberFormat(this.props.locale, this.getOptions());
  
          var numerals = _toConsumableArray(new Intl.NumberFormat(this.props.locale, {
            useGrouping: false
          }).format(9876543210)).reverse();
  
          var index = new Map(numerals.map(function (d, i) {
            return [d, i];
          }));
          this._numeral = new RegExp("[".concat(numerals.join(''), "]"), 'g');
          this._group = this.getGroupingExpression();
          this._minusSign = this.getMinusSignExpression();
          this._currency = this.getCurrencyExpression();
          this._decimal = this.getDecimalExpression();
          this._suffix = this.getSuffixExpression();
          this._prefix = this.getPrefixExpression();
  
          this._index = function (d) {
            return index.get(d);
          };
        }
      }, {
        key: "escapeRegExp",
        value: function escapeRegExp(text) {
          return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
        }
      }, {
        key: "getDecimalExpression",
        value: function getDecimalExpression() {
          var formatter = new Intl.NumberFormat(this.props.locale, _objectSpread(_objectSpread({}, this.getOptions()), {}, {
            useGrouping: false
          }));
          return new RegExp("[".concat(formatter.format(1.1).replace(this._currency, '').trim().replace(this._numeral, ''), "]"), 'g');
        }
      }, {
        key: "getGroupingExpression",
        value: function getGroupingExpression() {
          var formatter = new Intl.NumberFormat(this.props.locale, {
            useGrouping: true
          });
          this.groupChar = formatter.format(1000000).trim().replace(this._numeral, '').charAt(0);
          return new RegExp("[".concat(this.groupChar, "]"), 'g');
        }
      }, {
        key: "getMinusSignExpression",
        value: function getMinusSignExpression() {
          var formatter = new Intl.NumberFormat(this.props.locale, {
            useGrouping: false
          });
          return new RegExp("[".concat(formatter.format(-1).trim().replace(this._numeral, ''), "]"), 'g');
        }
      }, {
        key: "getCurrencyExpression",
        value: function getCurrencyExpression() {
          if (this.props.currency) {
            var formatter = new Intl.NumberFormat(this.props.locale, {
              style: 'currency',
              currency: this.props.currency,
              currencyDisplay: this.props.currencyDisplay,
              minimumFractionDigits: 0,
              maximumFractionDigits: 0
            });
            return new RegExp("[".concat(formatter.format(1).replace(/\s/g, '').replace(this._numeral, '').replace(this._group, ''), "]"), 'g');
          }
  
          return new RegExp("[]", 'g');
        }
      }, {
        key: "getPrefixExpression",
        value: function getPrefixExpression() {
          if (this.props.prefix) {
            this.prefixChar = this.props.prefix;
          } else {
            var formatter = new Intl.NumberFormat(this.props.locale, {
              style: this.props.mode,
              currency: this.props.currency,
              currencyDisplay: this.props.currencyDisplay
            });
            this.prefixChar = formatter.format(1).split('1')[0];
          }
  
          return new RegExp("".concat(this.escapeRegExp(this.prefixChar || '')), 'g');
        }
      }, {
        key: "getSuffixExpression",
        value: function getSuffixExpression() {
          if (this.props.suffix) {
            this.suffixChar = this.props.suffix;
          } else {
            var formatter = new Intl.NumberFormat(this.props.locale, {
              style: this.props.mode,
              currency: this.props.currency,
              currencyDisplay: this.props.currencyDisplay,
              minimumFractionDigits: 0,
              maximumFractionDigits: 0
            });
            this.suffixChar = formatter.format(1).split('1')[1];
          }
  
          return new RegExp("".concat(this.escapeRegExp(this.suffixChar || '')), 'g');
        }
      }, {
        key: "formatValue",
        value: function formatValue(value) {
          if (value != null) {
            if (value === '-') {
              // Minus sign
              return value;
            }
  
            if (this.props.format) {
              var formatter = new Intl.NumberFormat(this.props.locale, this.getOptions());
              var formattedValue = formatter.format(value);
  
              if (this.props.prefix) {
                formattedValue = this.props.prefix + formattedValue;
              }
  
              if (this.props.suffix) {
                formattedValue = formattedValue + this.props.suffix;
              }
  
              return formattedValue;
            }
  
            return value.toString();
          }
  
          return '';
        }
      }, {
        key: "parseValue",
        value: function parseValue(text) {
          var filteredText = text.replace(this._suffix, '').replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '').replace(this._group, '').replace(this._minusSign, '-').replace(this._decimal, '.').replace(this._numeral, this._index);
  
          if (filteredText) {
            if (filteredText === '-') // Minus sign
              return filteredText;
            var parsedValue = +filteredText;
            return isNaN(parsedValue) ? null : parsedValue;
          }
  
          return null;
        }
      }, {
        key: "repeat",
        value: function repeat(event, interval, dir) {
          var _this2 = this;
  
          var i = interval || 500;
          this.clearTimer();
          this.timer = setTimeout(function () {
            _this2.repeat(event, 40, dir);
          }, i);
          this.spin(event, dir);
        }
      }, {
        key: "spin",
        value: function spin(event, dir) {
          if (this.inputRef && this.inputRef.current) {
            var step = this.props.step * dir;
            var currentValue = this.parseValue(this.inputRef.current.value) || 0;
            var newValue = this.validateValue(currentValue + step);
            this.updateInput(newValue, null, 'spin');
            this.updateModel(event, newValue);
            this.handleOnChange(event, currentValue, newValue);
          }
        }
      }, {
        key: "onUpButtonMouseDown",
        value: function onUpButtonMouseDown(event) {
          if (!this.props.disabled && !this.props.readOnly) {
            this.inputRef.current.focus();
            this.repeat(event, null, 1);
            event.preventDefault();
          }
        }
      }, {
        key: "onUpButtonMouseUp",
        value: function onUpButtonMouseUp() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onUpButtonMouseLeave",
        value: function onUpButtonMouseLeave() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onUpButtonKeyUp",
        value: function onUpButtonKeyUp() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onUpButtonKeyDown",
        value: function onUpButtonKeyDown(event) {
          if (!this.props.disabled && !this.props.readOnly && (event.keyCode === 32 || event.keyCode === 13)) {
            this.repeat(event, null, 1);
          }
        }
      }, {
        key: "onDownButtonMouseDown",
        value: function onDownButtonMouseDown(event) {
          if (!this.props.disabled && !this.props.readOnly) {
            this.inputRef.current.focus();
            this.repeat(event, null, -1);
            event.preventDefault();
          }
        }
      }, {
        key: "onDownButtonMouseUp",
        value: function onDownButtonMouseUp() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onDownButtonMouseLeave",
        value: function onDownButtonMouseLeave() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onDownButtonKeyUp",
        value: function onDownButtonKeyUp() {
          if (!this.props.disabled && !this.props.readOnly) {
            this.clearTimer();
          }
        }
      }, {
        key: "onDownButtonKeyDown",
        value: function onDownButtonKeyDown(event) {
          if (!this.props.disabled && !this.props.readOnly && (event.keyCode === 32 || event.keyCode === 13)) {
            this.repeat(event, null, -1);
          }
        }
      }, {
        key: "onInput",
        value: function onInput(event) {
          if (this.props.disabled || this.props.readOnly) {
            return;
          }
  
          if (this.isSpecialChar) {
            event.target.value = this.lastValue;
          }
  
          this.isSpecialChar = false;
        }
      }, {
        key: "onInputKeyDown",
        value: function onInputKeyDown(event) {
          if (this.props.disabled || this.props.readOnly) {
            return;
          }
  
          this.lastValue = event.target.value;
  
          if (event.shiftKey || event.altKey) {
            this.isSpecialChar = true;
            return;
          }
  
          var selectionStart = event.target.selectionStart;
          var selectionEnd = event.target.selectionEnd;
          var inputValue = event.target.value;
          var newValueStr = null;
  
          if (event.altKey) {
            event.preventDefault();
          }
  
          switch (event.which) {
            //up
            case 38:
              this.spin(event, 1);
              event.preventDefault();
              break;
            //down
  
            case 40:
              this.spin(event, -1);
              event.preventDefault();
              break;
            //left
  
            case 37:
              if (!this.isNumeralChar(inputValue.charAt(selectionStart - 1))) {
                event.preventDefault();
              }
  
              break;
            //right
  
            case 39:
              if (!this.isNumeralChar(inputValue.charAt(selectionStart))) {
                event.preventDefault();
              }
  
              break;
            //enter
  
            case 13:
              newValueStr = this.validateValue(this.parseValue(inputValue));
              this.inputRef.current.value = this.formatValue(newValueStr);
              this.inputRef.current.setAttribute('aria-valuenow', newValueStr);
              this.updateModel(event, newValueStr);
              break;
            //backspace
  
            case 8:
              event.preventDefault();
  
              if (selectionStart === selectionEnd) {
                var deleteChar = inputValue.charAt(selectionStart - 1);
  
                var _this$getDecimalCharI = this.getDecimalCharIndexes(inputValue),
                    decimalCharIndex = _this$getDecimalCharI.decimalCharIndex,
                    decimalCharIndexWithoutPrefix = _this$getDecimalCharI.decimalCharIndexWithoutPrefix;
  
                if (this.isNumeralChar(deleteChar)) {
                  var decimalLength = this.getDecimalLength(inputValue);
  
                  if (this._group.test(deleteChar)) {
                    this._group.lastIndex = 0;
                    newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);
                  } else if (this._decimal.test(deleteChar)) {
                    this._decimal.lastIndex = 0;
  
                    if (decimalLength) {
                      this.inputRef.current.setSelectionRange(selectionStart - 1, selectionStart - 1);
                    } else {
                      newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
                    }
                  } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
                    var insertedText = this.isDecimalMode() && (this.props.minFractionDigits || 0) < decimalLength ? '' : '0';
                    newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);
                  } else if (decimalCharIndexWithoutPrefix === 1) {
                    newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);
                    newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
                  } else {
                    newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);
                  }
                }
  
                this.updateValue(event, newValueStr, null, 'delete-single');
              } else {
                newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
                this.updateValue(event, newValueStr, null, 'delete-range');
              }
  
              break;
            // del
  
            case 46:
              event.preventDefault();
  
              if (selectionStart === selectionEnd) {
                var _deleteChar = inputValue.charAt(selectionStart);
  
                var _this$getDecimalCharI2 = this.getDecimalCharIndexes(inputValue),
                    _decimalCharIndex = _this$getDecimalCharI2.decimalCharIndex,
                    _decimalCharIndexWithoutPrefix = _this$getDecimalCharI2.decimalCharIndexWithoutPrefix;
  
                if (this.isNumeralChar(_deleteChar)) {
                  var _decimalLength = this.getDecimalLength(inputValue);
  
                  if (this._group.test(_deleteChar)) {
                    this._group.lastIndex = 0;
                    newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);
                  } else if (this._decimal.test(_deleteChar)) {
                    this._decimal.lastIndex = 0;
  
                    if (_decimalLength) {
                      this.$refs.input.$el.setSelectionRange(selectionStart + 1, selectionStart + 1);
                    } else {
                      newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
                    }
                  } else if (_decimalCharIndex > 0 && selectionStart > _decimalCharIndex) {
                    var _insertedText = this.isDecimalMode() && (this.props.minFractionDigits || 0) < _decimalLength ? '' : '0';
  
                    newValueStr = inputValue.slice(0, selectionStart) + _insertedText + inputValue.slice(selectionStart + 1);
                  } else if (_decimalCharIndexWithoutPrefix === 1) {
                    newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);
                    newValueStr = this.parseValue(newValueStr) > 0 ? newValueStr : '';
                  } else {
                    newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);
                  }
                }
  
                this.updateValue(event, newValueStr, null, 'delete-back-single');
              } else {
                newValueStr = this.deleteRange(inputValue, selectionStart, selectionEnd);
                this.updateValue(event, newValueStr, null, 'delete-range');
              }
  
              break;
          }
  
          if (this.props.onKeyDown) {
            this.props.onKeyDown(event);
          }
        }
      }, {
        key: "onInputKeyPress",
        value: function onInputKeyPress(event) {
          if (this.props.disabled || this.props.readOnly) {
            return;
          }
  
          var code = event.which || event.keyCode;
  
          var _char = String.fromCharCode(code);
  
          var isDecimalSign = this.isDecimalSign(_char);
          var isMinusSign = this.isMinusSign(_char);
  
          if (48 <= code && code <= 57 || isMinusSign || isDecimalSign) {
            this.insert(event, _char, {
              isDecimalSign: isDecimalSign,
              isMinusSign: isMinusSign
            });
            event.preventDefault();
          }
        }
      }, {
        key: "onPaste",
        value: function onPaste(event) {
          event.preventDefault();
  
          if (this.props.disabled || this.props.readOnly) {
            return;
          }
  
          var data = (event.clipboardData || window['clipboardData']).getData('Text');
  
          if (data) {
            var filteredData = this.parseValue(data);
  
            if (filteredData != null) {
              this.insert(event, filteredData.toString());
            }
          }
        }
      }, {
        key: "allowMinusSign",
        value: function allowMinusSign() {
          return this.props.min === null || this.props.min < 0;
        }
      }, {
        key: "isMinusSign",
        value: function isMinusSign(_char2) {
          if (this._minusSign.test(_char2) || _char2 === '-') {
            this._minusSign.lastIndex = 0;
            return true;
          }
  
          return false;
        }
      }, {
        key: "isDecimalSign",
        value: function isDecimalSign(_char3) {
          if (this._decimal.test(_char3)) {
            this._decimal.lastIndex = 0;
            return true;
          }
  
          return false;
        }
      }, {
        key: "isDecimalMode",
        value: function isDecimalMode() {
          return this.props.mode === 'decimal';
        }
      }, {
        key: "getDecimalCharIndexes",
        value: function getDecimalCharIndexes(val) {
          var decimalCharIndex = val.search(this._decimal);
          this._decimal.lastIndex = 0;
          var filteredVal = val.replace(this._prefix, '').trim().replace(/\s/g, '').replace(this._currency, '');
          var decimalCharIndexWithoutPrefix = filteredVal.search(this._decimal);
          this._decimal.lastIndex = 0;
          return {
            decimalCharIndex: decimalCharIndex,
            decimalCharIndexWithoutPrefix: decimalCharIndexWithoutPrefix
          };
        }
      }, {
        key: "getCharIndexes",
        value: function getCharIndexes(val) {
          var decimalCharIndex = val.search(this._decimal);
          this._decimal.lastIndex = 0;
          var minusCharIndex = val.search(this._minusSign);
          this._minusSign.lastIndex = 0;
          var suffixCharIndex = val.search(this._suffix);
          this._suffix.lastIndex = 0;
          var currencyCharIndex = val.search(this._currency);
          this._currency.lastIndex = 0;
          return {
            decimalCharIndex: decimalCharIndex,
            minusCharIndex: minusCharIndex,
            suffixCharIndex: suffixCharIndex,
            currencyCharIndex: currencyCharIndex
          };
        }
      }, {
        key: "insert",
        value: function insert(event, text) {
          var sign = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
            isDecimalSign: false,
            isMinusSign: false
          };
          var minusCharIndexOnText = text.search(this._minusSign);
          this._minusSign.lastIndex = 0;
  
          if (!this.allowMinusSign() && minusCharIndexOnText !== -1) {
            return;
          }
  
          var selectionStart = this.inputRef.current.selectionStart;
          var selectionEnd = this.inputRef.current.selectionEnd;
          var inputValue = this.inputRef.current.value.trim();
  
          var _this$getCharIndexes = this.getCharIndexes(inputValue),
              decimalCharIndex = _this$getCharIndexes.decimalCharIndex,
              minusCharIndex = _this$getCharIndexes.minusCharIndex,
              suffixCharIndex = _this$getCharIndexes.suffixCharIndex,
              currencyCharIndex = _this$getCharIndexes.currencyCharIndex;
  
          var newValueStr;
  
          if (sign.isMinusSign) {
            if (selectionStart === 0) {
              newValueStr = inputValue;
  
              if (minusCharIndex === -1 || selectionEnd !== 0) {
                newValueStr = this.insertText(inputValue, text, 0, selectionEnd);
              }
  
              this.updateValue(event, newValueStr, text, 'insert');
            }
          } else if (sign.isDecimalSign) {
            if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {
              this.updateValue(event, inputValue, text, 'insert');
            } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {
              newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
              this.updateValue(event, newValueStr, text, 'insert');
            } else if (decimalCharIndex === -1 && this.props.maxFractionDigits) {
              newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
              this.updateValue(event, newValueStr, text, 'insert');
            }
          } else {
            var maxFractionDigits = this.numberFormat.resolvedOptions().maximumFractionDigits;
            var operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';
  
            if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {
              if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {
                var charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;
                newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);
                this.updateValue(event, newValueStr, text, operation);
              }
            } else {
              newValueStr = this.insertText(inputValue, text, selectionStart, selectionEnd);
              this.updateValue(event, newValueStr, text, operation);
            }
          }
        }
      }, {
        key: "insertText",
        value: function insertText(value, text, start, end) {
          var textSplit = text === '.' ? text : text.split('.');
  
          if (textSplit.length === 2) {
            var decimalCharIndex = value.slice(start, end).search(this._decimal);
            this._decimal.lastIndex = 0;
            return decimalCharIndex > 0 ? value.slice(0, start) + this.formatValue(text) + value.slice(end) : value || this.formatValue(text);
          } else if (end - start === value.length) {
            return this.formatValue(text);
          } else if (start === 0) {
            return text + value.slice(end);
          } else if (end === value.length) {
            return value.slice(0, start) + text;
          } else {
            return value.slice(0, start) + text + value.slice(end);
          }
        }
      }, {
        key: "deleteRange",
        value: function deleteRange(value, start, end) {
          var newValueStr;
          if (end - start === value.length) newValueStr = '';else if (start === 0) newValueStr = value.slice(end);else if (end === value.length) newValueStr = value.slice(0, start);else newValueStr = value.slice(0, start) + value.slice(end);
          return newValueStr;
        }
      }, {
        key: "initCursor",
        value: function initCursor() {
          var selectionStart = this.inputRef.current.selectionStart;
          var inputValue = this.inputRef.current.value;
          var valueLength = inputValue.length;
          var index = null; // remove prefix
  
          var prefixLength = (this.prefixChar || '').length;
          inputValue = inputValue.replace(this._prefix, '');
          selectionStart = selectionStart - prefixLength;
  
          var _char4 = inputValue.charAt(selectionStart);
  
          if (this.isNumeralChar(_char4)) {
            return selectionStart + prefixLength;
          } //left
  
  
          var i = selectionStart - 1;
  
          while (i >= 0) {
            _char4 = inputValue.charAt(i);
  
            if (this.isNumeralChar(_char4)) {
              index = i + prefixLength;
              break;
            } else {
              i--;
            }
          }
  
          if (index !== null) {
            this.inputRef.current.setSelectionRange(index + 1, index + 1);
          } else {
            i = selectionStart;
  
            while (i < valueLength) {
              _char4 = inputValue.charAt(i);
  
              if (this.isNumeralChar(_char4)) {
                index = i + prefixLength;
                break;
              } else {
                i++;
              }
            }
  
            if (index !== null) {
              this.inputRef.current.setSelectionRange(index, index);
            }
          }
  
          return index || 0;
        }
      }, {
        key: "onInputClick",
        value: function onInputClick() {
          this.initCursor();
        }
      }, {
        key: "isNumeralChar",
        value: function isNumeralChar(_char5) {
          if (_char5.length === 1 && (this._numeral.test(_char5) || this._decimal.test(_char5) || this._group.test(_char5) || this._minusSign.test(_char5))) {
            this.resetRegex();
            return true;
          } else {
            return false;
          }
        }
      }, {
        key: "resetRegex",
        value: function resetRegex() {
          this._numeral.lastIndex = 0;
          this._decimal.lastIndex = 0;
          this._group.lastIndex = 0;
          this._minusSign.lastIndex = 0;
        }
      }, {
        key: "updateValue",
        value: function updateValue(event, valueStr, insertedValueStr, operation) {
          var currentValue = this.inputRef.current.value;
          var newValue = null;
  
          if (valueStr != null) {
            newValue = this.parseValue(valueStr);
            newValue = this.evaluateEmpty(newValue);
            this.updateInput(newValue, insertedValueStr, operation, valueStr);
            this.handleOnChange(event, currentValue, newValue);
          }
        }
      }, {
        key: "evaluateEmpty",
        value: function evaluateEmpty(newValue) {
          return !newValue && !this.props.allowEmpty ? this.props.min || 0 : newValue;
        }
      }, {
        key: "handleOnChange",
        value: function handleOnChange(event, currentValue, newValue) {
          if (this.props.onChange && this.isValueChanged(currentValue, newValue)) {
            this.props.onChange({
              originalEvent: event,
              value: newValue
            });
          }
        }
      }, {
        key: "isValueChanged",
        value: function isValueChanged(currentValue, newValue) {
          if (newValue === null && currentValue !== null) {
            return true;
          }
  
          if (newValue != null) {
            var parsedCurrentValue = typeof currentValue === 'string' ? this.parseValue(currentValue) : currentValue;
            return newValue !== parsedCurrentValue;
          }
  
          return false;
        }
      }, {
        key: "validateValue",
        value: function validateValue(value) {
          if (value === '-' || value == null) {
            return null;
          }
  
          if (this.props.min !== null && value < this.props.min) {
            return this.props.min;
          }
  
          if (this.props.max !== null && value > this.props.max) {
            return this.props.max;
          }
  
          return value;
        }
      }, {
        key: "updateInput",
        value: function updateInput(value, insertedValueStr, operation, valueStr) {
          insertedValueStr = insertedValueStr || '';
          var inputEl = this.inputRef.current;
          var inputValue = inputEl.value;
          var newValue = this.formatValue(value);
          var currentLength = inputValue.length;
  
          if (newValue !== valueStr) {
            newValue = this.concatValues(newValue, valueStr);
          }
  
          if (currentLength === 0) {
            inputEl.value = newValue;
            inputEl.setSelectionRange(0, 0);
            var index = this.initCursor();
            var selectionEnd = index + insertedValueStr.length;
            inputEl.setSelectionRange(selectionEnd, selectionEnd);
          } else {
            var selectionStart = inputEl.selectionStart;
            var _selectionEnd = inputEl.selectionEnd;
            inputEl.value = newValue;
            var newLength = newValue.length;
  
            if (operation === 'range-insert') {
              var startValue = this.parseValue((inputValue || '').slice(0, selectionStart));
              var startValueStr = startValue !== null ? startValue.toString() : '';
              var startExpr = startValueStr.split('').join("(".concat(this.groupChar, ")?"));
              var sRegex = new RegExp(startExpr, 'g');
              sRegex.test(newValue);
              var tExpr = insertedValueStr.split('').join("(".concat(this.groupChar, ")?"));
              var tRegex = new RegExp(tExpr, 'g');
              tRegex.test(newValue.slice(sRegex.lastIndex));
              _selectionEnd = sRegex.lastIndex + tRegex.lastIndex;
              inputEl.setSelectionRange(_selectionEnd, _selectionEnd);
            } else if (newLength === currentLength) {
              if (operation === 'insert' || operation === 'delete-back-single') inputEl.setSelectionRange(_selectionEnd + 1, _selectionEnd + 1);else if (operation === 'delete-single') inputEl.setSelectionRange(_selectionEnd - 1, _selectionEnd - 1);else if (operation === 'delete-range' || operation === 'spin') inputEl.setSelectionRange(_selectionEnd, _selectionEnd);
            } else if (operation === 'delete-back-single') {
              var prevChar = inputValue.charAt(_selectionEnd - 1);
              var nextChar = inputValue.charAt(_selectionEnd);
              var diff = currentLength - newLength;
  
              var isGroupChar = this._group.test(nextChar);
  
              if (isGroupChar && diff === 1) {
                _selectionEnd += 1;
              } else if (!isGroupChar && this.isNumeralChar(prevChar)) {
                _selectionEnd += -1 * diff + 1;
              }
  
              this._group.lastIndex = 0;
              inputEl.setSelectionRange(_selectionEnd, _selectionEnd);
            } else if (inputValue === '-' && operation === 'insert') {
              inputEl.setSelectionRange(0, 0);
  
              var _index = this.initCursor();
  
              var _selectionEnd2 = _index + insertedValueStr.length + 1;
  
              inputEl.setSelectionRange(_selectionEnd2, _selectionEnd2);
            } else {
              _selectionEnd = _selectionEnd + (newLength - currentLength);
              inputEl.setSelectionRange(_selectionEnd, _selectionEnd);
            }
          }
  
          inputEl.setAttribute('aria-valuenow', value);
        }
      }, {
        key: "updateInputValue",
        value: function updateInputValue(newValue) {
          newValue = this.evaluateEmpty(newValue);
          var inputEl = this.inputRef.current;
          var value = inputEl.value;
          var formattedValue = this.formattedValue(newValue);
  
          if (value !== formattedValue) {
            inputEl.value = formattedValue;
            inputEl.setAttribute('aria-valuenow', newValue);
          }
        }
      }, {
        key: "formattedValue",
        value: function formattedValue(val) {
          var newValue = this.evaluateEmpty(val);
          return this.formatValue(newValue);
        }
      }, {
        key: "concatValues",
        value: function concatValues(val1, val2) {
          if (val1 && val2) {
            var decimalCharIndex = val2.search(this._decimal);
            this._decimal.lastIndex = 0;
            return decimalCharIndex !== -1 ? val1.split(this._decimal)[0] + val2.slice(decimalCharIndex) : val1;
          }
  
          return val1;
        }
      }, {
        key: "getDecimalLength",
        value: function getDecimalLength(value) {
          if (value) {
            var valueSplit = value.split(this._decimal);
  
            if (valueSplit.length === 2) {
              return valueSplit[1].replace(this._suffix, '').trim().replace(/\s/g, '').replace(this._currency, '').length;
            }
          }
  
          return 0;
        }
      }, {
        key: "updateModel",
        value: function updateModel(event, value) {
          if (this.props.onValueChange) {
            this.props.onValueChange({
              originalEvent: event,
              value: value,
              stopPropagation: function stopPropagation() {},
              preventDefault: function preventDefault() {},
              target: {
                name: this.props.name,
                id: this.props.id,
                value: value
              }
            });
          }
        }
      }, {
        key: "onInputFocus",
        value: function onInputFocus(event) {
          var _this3 = this;
  
          event.persist();
          this.setState({
            focused: true
          }, function () {
            if (_this3.props.onFocus) {
              _this3.props.onFocus(event);
            }
          });
        }
      }, {
        key: "onInputBlur",
        value: function onInputBlur(event) {
          var _this4 = this;
  
          event.persist();
          this.setState({
            focused: false
          }, function () {
            var currentValue = _this4.inputRef.current.value;
  
            if (_this4.isValueChanged(currentValue, _this4.props.value)) {
              var newValue = _this4.validateValue(_this4.parseValue(currentValue));
  
              _this4.updateInputValue(newValue);
  
              _this4.updateModel(event, newValue);
            }
  
            if (_this4.props.onBlur) {
              _this4.props.onBlur(event);
            }
          });
        }
      }, {
        key: "clearTimer",
        value: function clearTimer() {
          if (this.timer) {
            clearInterval(this.timer);
          }
        }
      }, {
        key: "isStacked",
        value: function isStacked() {
          return this.props.showButtons && this.props.buttonLayout === 'stacked';
        }
      }, {
        key: "isHorizontal",
        value: function isHorizontal() {
          return this.props.showButtons && this.props.buttonLayout === 'horizontal';
        }
      }, {
        key: "isVertical",
        value: function isVertical() {
          return this.props.showButtons && this.props.buttonLayout === 'vertical';
        }
      }, {
        key: "getInputMode",
        value: function getInputMode() {
          return this.props.inputMode || (this.props.mode === 'decimal' && !this.props.minFractionDigits ? 'numeric' : 'decimal');
        }
      }, {
        key: "getFormatter",
        value: function getFormatter() {
          return this.numberFormat;
        }
      }, {
        key: "updateInputRef",
        value: function updateInputRef() {
          var ref = this.props.inputRef;
  
          if (ref) {
            if (typeof ref === 'function') {
              ref(this.inputRef.current);
            } else {
              ref.current = this.inputRef.current;
            }
          }
        }
      }, {
        key: "componentDidMount",
        value: function componentDidMount() {
          this.updateInputRef();
  
          if (this.props.tooltip) {
            this.renderTooltip();
          }
  
          var newValue = this.validateValue(this.props.value);
  
          if (this.props.value !== null && this.props.value !== newValue) {
            this.updateModel(null, newValue);
          }
        }
      }, {
        key: "componentDidUpdate",
        value: function componentDidUpdate(prevProps) {
          if (prevProps.tooltip !== this.props.tooltip || prevProps.tooltipOptions !== this.props.tooltipOptions) {
            if (this.tooltip) this.tooltip.update(_objectSpread({
              content: this.props.tooltip
            }, this.props.tooltipOptions || {}));else this.renderTooltip();
          }
  
          var isOptionChanged = this.isOptionChanged(prevProps);
  
          if (isOptionChanged) {
            this.constructParser();
          }
  
          if (prevProps.value !== this.props.value || isOptionChanged) {
            var newValue = this.validateValue(this.props.value);
            this.updateInputValue(newValue);
  
            if (this.props.value !== null && this.props.value !== newValue) {
              this.updateModel(null, newValue);
            }
          }
        }
      }, {
        key: "isOptionChanged",
        value: function isOptionChanged(prevProps) {
          var _this5 = this;
  
          var optionProps = ['locale', 'localeMatcher', 'mode', 'currency', 'currencyDisplay', 'useGrouping', 'minFractionDigits', 'maxFractionDigits', 'suffix', 'prefix'];
          return optionProps.some(function (option) {
            return prevProps[option] !== _this5.props[option];
          });
        }
      }, {
        key: "componentWillUnmount",
        value: function componentWillUnmount() {
          if (this.tooltip) {
            this.tooltip.destroy();
            this.tooltip = null;
          }
        }
      }, {
        key: "renderTooltip",
        value: function renderTooltip() {
          this.tooltip = tooltip.tip({
            target: this.element,
            content: this.props.tooltip,
            options: this.props.tooltipOptions
          });
        }
      }, {
        key: "renderInputElement",
        value: function renderInputElement() {
          var className = utils.classNames('p-inputnumber-input', this.props.inputClassName);
          var valueToRender = this.formattedValue(this.props.value);
          return /*#__PURE__*/React__default["default"].createElement(inputtext.InputText, {
            ref: this.inputRef,
            id: this.props.inputId,
            style: this.props.inputStyle,
            role: "spinbutton",
            className: className,
            defaultValue: valueToRender,
            type: this.props.type,
            size: this.props.size,
            tabIndex: this.props.tabIndex,
            inputMode: this.getInputMode(),
            maxLength: this.props.maxLength,
            disabled: this.props.disabled,
            required: this.props.required,
            pattern: this.props.pattern,
            placeholder: this.props.placeholder,
            readOnly: this.props.readOnly,
            name: this.props.name,
            autoFocus: this.props.autoFocus,
            onKeyDown: this.onInputKeyDown,
            onKeyPress: this.onInputKeyPress,
            onInput: this.onInput,
            onClick: this.onInputClick,
            onBlur: this.onInputBlur,
            onFocus: this.onInputFocus,
            onPaste: this.onPaste,
            min: this.props.min,
            max: this.props.max,
            "aria-valuemin": this.props.min,
            "aria-valuemax": this.props.max,
            "aria-valuenow": this.props.value,
            "aria-labelledby": this.props.ariaLabelledBy
          });
        }
      }, {
        key: "renderUpButton",
        value: function renderUpButton() {
          var className = utils.classNames('p-inputnumber-button p-inputnumber-button-up p-button p-button-icon-only p-component', {
            'p-disabled': this.props.disabled
          }, this.props.incrementButtonClassName);
          var icon = utils.classNames('p-button-icon', this.props.incrementButtonIcon);
          return /*#__PURE__*/React__default["default"].createElement("button", {
            type: "button",
            className: className,
            onMouseLeave: this.onUpButtonMouseLeave,
            onMouseDown: this.onUpButtonMouseDown,
            onMouseUp: this.onUpButtonMouseUp,
            onKeyDown: this.onUpButtonKeyDown,
            onKeyUp: this.onUpButtonKeyUp,
            disabled: this.props.disabled,
            tabIndex: -1
          }, /*#__PURE__*/React__default["default"].createElement("span", {
            className: icon
          }), /*#__PURE__*/React__default["default"].createElement(ripple.Ripple, null));
        }
      }, {
        key: "renderDownButton",
        value: function renderDownButton() {
          var className = utils.classNames('p-inputnumber-button p-inputnumber-button-down p-button p-button-icon-only p-component', {
            'p-disabled': this.props.disabled
          }, this.props.decrementButtonClassName);
          var icon = utils.classNames('p-button-icon', this.props.decrementButtonIcon);
          return /*#__PURE__*/React__default["default"].createElement("button", {
            type: "button",
            className: className,
            onMouseLeave: this.onDownButtonMouseLeave,
            onMouseDown: this.onDownButtonMouseDown,
            onMouseUp: this.onDownButtonMouseUp,
            onKeyDown: this.onDownButtonKeyDown,
            onKeyUp: this.onDownButtonKeyUp,
            disabled: this.props.disabled,
            tabIndex: -1
          }, /*#__PURE__*/React__default["default"].createElement("span", {
            className: icon
          }), /*#__PURE__*/React__default["default"].createElement(ripple.Ripple, null));
        }
      }, {
        key: "renderButtonGroup",
        value: function renderButtonGroup() {
          var upButton = this.props.showButtons && this.renderUpButton();
          var downButton = this.props.showButtons && this.renderDownButton();
  
          if (this.isStacked()) {
            return /*#__PURE__*/React__default["default"].createElement("span", {
              className: "p-inputnumber-button-group"
            }, upButton, downButton);
          }
  
          return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, upButton, downButton);
        }
      }, {
        key: "render",
        value: function render() {
          var _this6 = this;
  
          var className = utils.classNames('p-inputnumber p-component p-inputwrapper', this.props.className, {
            'p-inputwrapper-filled': this.props.value != null && this.props.value.toString().length > 0,
            'p-inputwrapper-focus': this.state.focused,
            'p-inputnumber-buttons-stacked': this.isStacked(),
            'p-inputnumber-buttons-horizontal': this.isHorizontal(),
            'p-inputnumber-buttons-vertical': this.isVertical()
          });
          var inputElement = this.renderInputElement();
          var buttonGroup = this.renderButtonGroup();
          return /*#__PURE__*/React__default["default"].createElement("span", {
            ref: function ref(el) {
              return _this6.element = el;
            },
            id: this.props.id,
            className: className,
            style: this.props.style
          }, inputElement, buttonGroup);
        }
      }]);
  
      return InputNumber;
    }(React.Component);
  
    _defineProperty(InputNumber, "defaultProps", {
      value: null,
      inputRef: null,
      format: true,
      showButtons: false,
      buttonLayout: 'stacked',
      incrementButtonClassName: null,
      decrementButtonClassName: null,
      incrementButtonIcon: 'pi pi-angle-up',
      decrementButtonIcon: 'pi pi-angle-down',
      locale: undefined,
      localeMatcher: undefined,
      mode: 'decimal',
      suffix: null,
      prefix: null,
      currency: undefined,
      currencyDisplay: undefined,
      useGrouping: true,
      minFractionDigits: undefined,
      maxFractionDigits: undefined,
      id: null,
      name: null,
      type: 'text',
      allowEmpty: true,
      step: 1,
      min: null,
      max: null,
      disabled: false,
      required: false,
      tabIndex: null,
      pattern: null,
      inputMode: null,
      placeholder: null,
      readOnly: false,
      size: null,
      style: null,
      className: null,
      inputId: null,
      autoFocus: false,
      inputStyle: null,
      inputClassName: null,
      tooltip: null,
      tooltipOptions: null,
      ariaLabelledBy: null,
      onValueChange: null,
      onChange: null,
      onBlur: null,
      onFocus: null,
      onKeyDown: null
    });
  
    exports.InputNumber = InputNumber;
  
    Object.defineProperty(exports, '__esModule', { value: true });
  
    return exports;
  
  })({}, React, primereact.inputtext, primereact.utils, primereact.tooltip, primereact.ripple);
  