@activecollab/components 2.0.227 → 2.0.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["_react","_interopRequireWildcard","require","_Input","_hooks","_utils","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","InputNumber","exports","forwardRef","_ref","ref","_ref$decimalLength","decimalLength","_ref$decimalSeparator","decimalSeparator","_ref$disableAbbreviat","disableAbbreviation","disabled","_ref$disableMacros","disableMacros","invalid","_ref$step","step","_ref$thousandSeparato","thousandSeparator","defaultValue","value","onCancel","onSave","externalEnterKeyPress","onEnterKeyPress","allowEmptyValue","externalOnChange","onChange","externalOnClick","onClick","limit","placeholder","_ref$trimDecimals","trimDecimals","min","max","externalOnBlur","onBlur","_ref$update","update","_ref$shortenThreshold","shortenThreshold","rest","inputRef","useRef","handleRef","useForkRef","_useInputNumber","useInputNumber","onKeyDown","onFocus","onDoubleClick","createElement","Input","type","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputNumberProps\n extends Omit<InputProps, \"value\" | \"onChange\" | \"step\" | \"onBlur\">,\n IInputNumber {\n shortenThreshold?: number;\n}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n onChange: externalOnChange,\n onClick: externalOnClick,\n limit,\n placeholder,\n trimDecimals = true,\n min,\n max,\n onBlur: externalOnBlur,\n update = false,\n shortenThreshold = 1000,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onFocus,\n onDoubleClick,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n value: defaultValue,\n onCancel,\n onSave,\n allowEmptyValue,\n limit,\n trimDecimals,\n min,\n max,\n onBlur: externalOnBlur,\n update,\n shortenThreshold,\n },\n inputRef\n );\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n placeholder={placeholder}\n value={value}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={onChange}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onFocus={onFocus}\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-invalid={invalid}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputNumber.js","names":["_react","_interopRequireWildcard","require","_Input","_hooks","_utils","_excluded","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","InputNumber","exports","forwardRef","_ref","ref","_ref$decimalLength","decimalLength","_ref$decimalSeparator","decimalSeparator","_ref$disableAbbreviat","disableAbbreviation","disabled","_ref$disableMacros","disableMacros","invalid","_ref$step","step","_ref$thousandSeparato","thousandSeparator","defaultValue","value","onCancel","onSave","externalEnterKeyPress","onEnterKeyPress","allowEmptyValue","externalOnChange","onChange","externalOnClick","onClick","limit","placeholder","_ref$trimDecimals","trimDecimals","min","max","externalOnBlur","onBlur","_ref$update","update","_ref$shortenThreshold","shortenThreshold","rest","inputRef","useRef","handleRef","useForkRef","_useInputNumber","useInputNumber","onKeyDown","onFocus","onDoubleClick","createElement","Input","type","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputNumberProps\n extends Omit<InputProps, \"value\" | \"onChange\" | \"step\" | \"onBlur\">,\n IInputNumber {\n shortenThreshold?: number;\n min?: number;\n max?: number;\n}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n onChange: externalOnChange,\n onClick: externalOnClick,\n limit,\n placeholder,\n trimDecimals = true,\n min,\n max,\n onBlur: externalOnBlur,\n update = false,\n shortenThreshold = 1000,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onFocus,\n onDoubleClick,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n value: defaultValue,\n onCancel,\n onSave,\n allowEmptyValue,\n limit,\n trimDecimals,\n min,\n max,\n onBlur: externalOnBlur,\n update,\n shortenThreshold,\n },\n inputRef\n );\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n placeholder={placeholder}\n value={value}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={onChange}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onFocus={onFocus}\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-invalid={invalid}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
22
22
  disableMacros = _ref.disableMacros,
23
23
  decimalLength = _ref.decimalLength,
24
24
  _ref$value = _ref.value,
25
- value = _ref$value === void 0 ? "" : _ref$value,
25
+ value = _ref$value === void 0 ? undefined : _ref$value,
26
26
  onChange = _ref.onChange,
27
27
  onSave = _ref.onSave,
28
28
  onEnterKeyPress = _ref.onEnterKeyPress,
@@ -47,39 +47,53 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
47
47
  console.warn("Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.");
48
48
  }
49
49
  var _useState = (0, _react.useState)(function () {
50
- return (0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold);
50
+ return value;
51
51
  }),
52
52
  _useState2 = _slicedToArray(_useState, 2),
53
- currentValue = _useState2[0],
54
- setCurrentValue = _useState2[1];
53
+ numericValue = _useState2[0],
54
+ setNumericValue = _useState2[1];
55
55
  var _useState3 = (0, _react.useState)(function () {
56
- return (0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold);
56
+ return value;
57
57
  }),
58
58
  _useState4 = _slicedToArray(_useState3, 2),
59
- prevValue = _useState4[0],
60
- setPrevValue = _useState4[1];
59
+ prevNumericValue = _useState4[0],
60
+ setPrevNumericValue = _useState4[1];
61
61
  var _useState5 = (0, _react.useState)(function () {
62
- return (0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold);
62
+ return (0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold);
63
63
  }),
64
64
  _useState6 = _slicedToArray(_useState5, 2),
65
- unformattedValue = _useState6[0],
66
- setUnformattedValue = _useState6[1];
65
+ currentValue = _useState6[0],
66
+ setCurrentValue = _useState6[1];
67
67
  var _useState7 = (0, _react.useState)(function () {
68
- return (0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold);
68
+ return (0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold);
69
69
  }),
70
70
  _useState8 = _slicedToArray(_useState7, 2),
71
- unformattedPrevValue = _useState8[0],
72
- setUnformattedPrevValue = _useState8[1];
73
- var _useState9 = (0, _react.useState)(false),
71
+ prevValue = _useState8[0],
72
+ setPrevValue = _useState8[1];
73
+ var _useState9 = (0, _react.useState)(function () {
74
+ return (0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold);
75
+ }),
74
76
  _useState10 = _slicedToArray(_useState9, 2),
75
- focused = _useState10[0],
76
- setFocused = _useState10[1];
77
+ unformattedValue = _useState10[0],
78
+ setUnformattedValue = _useState10[1];
79
+ var _useState11 = (0, _react.useState)(function () {
80
+ return (0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold);
81
+ }),
82
+ _useState12 = _slicedToArray(_useState11, 2),
83
+ unformattedPrevValue = _useState12[0],
84
+ setUnformattedPrevValue = _useState12[1];
85
+ var _useState13 = (0, _react.useState)(false),
86
+ _useState14 = _slicedToArray(_useState13, 2),
87
+ focused = _useState14[0],
88
+ setFocused = _useState14[1];
77
89
  (0, _react.useEffect)(function () {
78
- if (value !== prevValue && (!focused || update)) {
90
+ if (value !== prevNumericValue && (!focused || update)) {
79
91
  setCurrentValue((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold));
80
92
  setPrevValue((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold));
81
93
  setUnformattedValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold));
82
94
  setUnformattedPrevValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator, false, decimalLength, "long", shortenThreshold));
95
+ setNumericValue(value);
96
+ setPrevNumericValue(value);
83
97
  }
84
98
  // eslint-disable-next-line react-hooks/exhaustive-deps
85
99
  }, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value, focused]);
@@ -88,23 +102,31 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
88
102
  if (escapeRef.current) {
89
103
  setCurrentValue(prevValue);
90
104
  setUnformattedValue(unformattedPrevValue);
91
- if (onChange) onChange(String(unformattedPrevValue));
105
+ setNumericValue(prevNumericValue);
106
+ if (onChange) onChange(prevNumericValue);
92
107
  } else {
93
108
  if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
94
109
  var _value = (0, _currencyUtils.formatNumber)(currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short", shortenThreshold);
110
+ var _unformatedValue = (0, _currencyUtils.formatNumber)(currentValue, "", decimalSeparator, false, decimalLength, "long", shortenThreshold);
111
+ var _numericValue = (0, _currencyUtils.getNumberFromString)(_unformatedValue, thousandSeparator, decimalSeparator);
95
112
  setPrevValue(_value);
96
- setUnformattedPrevValue((0, _currencyUtils.formatNumber)(currentValue, "", decimalSeparator, false, decimalLength, "long", shortenThreshold));
97
- setUnformattedValue((0, _currencyUtils.formatNumber)(currentValue, "", decimalSeparator, false, decimalLength, "long", shortenThreshold));
113
+ setUnformattedPrevValue(_unformatedValue);
114
+ setUnformattedValue(_unformatedValue);
115
+ setNumericValue(_numericValue);
116
+ setPrevNumericValue(_numericValue);
117
+ if (_numericValue !== prevNumericValue) onChange === null || onChange === void 0 || onChange(_numericValue);
98
118
  setCurrentValue(_value);
99
119
  typeof onSave === "function" && onSave(e);
100
120
  } else {
101
121
  if (!allowEmptyValue) {
102
122
  setCurrentValue(prevValue);
103
123
  setUnformattedValue(unformattedPrevValue);
124
+ setNumericValue(prevNumericValue);
125
+ onChange === null || onChange === void 0 || onChange(prevNumericValue);
104
126
  typeof onCancel === "function" && onCancel(e);
105
127
  } else {
106
- if (typeof onSave === "function" && prevValue !== e.target.value) {
107
- onSave(e);
128
+ if (prevValue !== e.target.value) {
129
+ onSave === null || onSave === void 0 || onSave(e);
108
130
  } else {
109
131
  typeof onCancel === "function" && onCancel(e);
110
132
  }
@@ -113,52 +135,51 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
113
135
  }
114
136
  setFocused(false);
115
137
  typeof onBlur === "function" && onBlur(e);
116
- }, [onBlur, prevValue, unformattedPrevValue, onChange, currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation, shortenThreshold, onSave, allowEmptyValue, onCancel]);
138
+ }, [currentValue, onBlur, prevValue, unformattedPrevValue, prevNumericValue, onChange, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation, shortenThreshold, onSave, allowEmptyValue, onCancel]);
117
139
  var updateValue = (0, _react.useCallback)(function (type) {
118
- var preformattedValue = String(unformattedValue).replace(thousandSeparator, "").replace(decimalSeparator, ".");
119
- var numericValue = parseFloat(preformattedValue);
120
- if (isNaN(numericValue)) return;
121
- if (max !== undefined && numericValue > Number(max) || min !== undefined && numericValue < Number(min)) {
140
+ if (max !== undefined && Number(numericValue) > max || min !== undefined && Number(numericValue) < min) {
122
141
  return;
123
142
  }
124
143
  var newValue = numericValue;
125
144
  if (type === "increment") {
126
- if (max === undefined || numericValue + step <= Number(max)) {
127
- newValue = numericValue + step;
128
- } else if (numericValue < Number(max)) {
129
- newValue = Number(max);
145
+ if (max === undefined || Number(numericValue) + step <= max) {
146
+ newValue = Number(numericValue) + step;
147
+ } else if (Number(numericValue) < max) {
148
+ newValue = max;
130
149
  } else {
131
150
  return;
132
151
  }
133
152
  } else if (type === "decrement") {
134
- if (min === undefined || numericValue - step >= Number(min)) {
135
- newValue = numericValue - step;
136
- } else if (numericValue > Number(min)) {
137
- newValue = Number(min);
153
+ if (min === undefined || Number(numericValue) - step >= min) {
154
+ newValue = Number(numericValue) - step;
155
+ } else if (Number(numericValue) > min) {
156
+ newValue = min;
138
157
  } else {
139
158
  return;
140
159
  }
141
160
  }
142
161
  var formattedValue;
143
162
  if (decimalLength !== undefined) {
144
- formattedValue = newValue.toFixed(decimalLength);
163
+ formattedValue = Number(newValue).toFixed(decimalLength);
145
164
  } else {
146
- formattedValue = newValue.toFixed(2);
165
+ formattedValue = Number(newValue).toFixed(2);
147
166
  }
148
167
  if (decimalLength !== undefined && decimalLength === 0) {
149
- formattedValue = Math.round(newValue).toString();
168
+ formattedValue = Math.round(Number(newValue)).toString();
150
169
  }
151
170
  if (formattedValue.includes(".") || formattedValue.includes(",")) {
152
171
  formattedValue = formattedValue.replace(".", decimalSeparator);
153
172
  }
173
+ setNumericValue(newValue);
174
+ setPrevNumericValue(newValue);
154
175
  setUnformattedValue(formattedValue);
155
176
  setCurrentValue(formattedValue);
156
- if (onChange) onChange(formattedValue);
157
- }, [unformattedValue, thousandSeparator, decimalSeparator, decimalLength, onChange, step, min, max]);
177
+ if (onChange) onChange(newValue);
178
+ }, [max, numericValue, min, decimalLength, onChange, step, decimalSeparator]);
158
179
  var handleKeyDown = (0, _react.useCallback)(function (e) {
159
180
  if (e.key === "Enter") {
160
181
  e.target.blur();
161
- if (typeof onEnterKeyPress === "function") onEnterKeyPress(e.target.value);
182
+ if (typeof onEnterKeyPress === "function") onEnterKeyPress(numericValue);
162
183
  }
163
184
  if (e.key === "ArrowLeft") {
164
185
  return;
@@ -219,25 +240,35 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
219
240
  e.preventDefault();
220
241
  return;
221
242
  }
222
- }, [decimalLength, decimalSeparator, disableMacros, inputRef, limit, min, onCancel, onEnterKeyPress, updateValue, validation]);
243
+ }, [decimalLength, decimalSeparator, disableMacros, inputRef, limit, min, numericValue, onCancel, onEnterKeyPress, updateValue, validation]);
223
244
  var handleChange = (0, _react.useCallback)(function (e) {
224
245
  var inputValue = e.target.value;
246
+ var numericNewValue = undefined;
225
247
  var numericInput = disableMacros ? inputValue : inputValue.replace(/(\d+(?:[.,]\d+)?)([kmbtKMBT])/, function (_, num, unit) {
226
248
  var normalizedNum = num.replace(",", ".");
227
249
  var parts = normalizedNum.split(".");
228
250
  var integerPart = parts[0];
229
251
  var fractionalPart = parts[1];
230
252
  var newInteger = parseInt(integerPart, 10) * _currencyUtils.currencyMultiplier[unit.toLowerCase()];
253
+ numericNewValue = parseFloat("".concat(newInteger ? newInteger : 0, ".").concat(fractionalPart ? fractionalPart : 0));
231
254
  var result = newInteger.toString();
232
255
  if (fractionalPart !== undefined) {
233
256
  result += decimalSeparator + fractionalPart;
234
257
  }
235
258
  return result;
236
259
  });
260
+ if (numericNewValue === undefined) {
261
+ if (inputValue) {
262
+ numericNewValue = parseFloat(inputValue.replace(",", "."));
263
+ } else {
264
+ numericNewValue = undefined;
265
+ }
266
+ }
237
267
  setCurrentValue(numericInput);
238
268
  setUnformattedValue(numericInput);
239
- if (onChange) onChange(numericInput);
240
- }, [disableMacros, decimalSeparator, onChange]);
269
+ setNumericValue(numericNewValue);
270
+ if (onChange && numericNewValue !== numericValue) onChange(numericNewValue);
271
+ }, [disableMacros, onChange, numericValue, decimalSeparator]);
241
272
  var handleClick = (0, _react.useCallback)(function (e) {
242
273
  if (typeof onClick === "function") {
243
274
  onClick(e);
@@ -262,7 +293,8 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
262
293
  onDoubleClick: handleDoubleClick,
263
294
  onFocus: handleFocus,
264
295
  focused,
265
- unformattedValue
296
+ unformattedValue,
297
+ numericValue
266
298
  };
267
299
  };
268
300
  //# sourceMappingURL=useInputNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInputNumber.js","names":["_react","require","_utils","_currencyUtils","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","r","l","t","Symbol","iterator","e","u","a","f","next","done","push","value","return","isArray","useInputNumber","exports","_ref","inputRef","_ref$decimalSeparator","decimalSeparator","_ref$thousandSeparato","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","_ref$value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","_ref$step","step","_ref$trimDecimals","trimDecimals","limit","_ref$validation","validation","validateNumberInput","min","max","onBlur","update","_ref$shortenThreshold","shortenThreshold","isMaxValid","undefined","Number","console","warn","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","_useState7","_useState8","unformattedPrevValue","setUnformattedPrevValue","_useState9","_useState10","focused","setFocused","useEffect","escapeRef","useRef","handleBlur","useCallback","current","String","target","trim","_value","updateValue","type","preformattedValue","replace","numericValue","parseFloat","isNaN","newValue","formattedValue","toFixed","Math","round","includes","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericInput","_","num","unit","normalizedNum","parts","split","integerPart","fractionalPart","newInteger","parseInt","currencyMultiplier","toLowerCase","result","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport { currencyMultiplier, formatNumber } from \"../utils/currencyUtils\";\n\nexport type Separators = \".\" | \",\" | \" \" | \"\";\n\nexport interface IInputNumber {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n trimDecimals?: boolean;\n onSave?: (e: Event) => void;\n value?: string | number;\n step?: number;\n limit?: number;\n onEnterKeyPress?: (val: string) => void;\n onChange?: (val: string) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n onBlur?: (e: Event) => void;\n validation?: (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n ) => boolean;\n min?: string | number;\n max?: string | number;\n update?: boolean;\n shortenThreshold?: number;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value = \"\",\n onChange,\n onSave,\n onEnterKeyPress,\n onClick,\n onCancel,\n allowEmptyValue,\n step = 1,\n trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n onBlur,\n update,\n shortenThreshold = 1000,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n if (value !== prevValue && (!focused || update)) {\n setCurrentValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n setPrevValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n setUnformattedValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n focused,\n ]);\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\n if (onChange) onChange(String(unformattedPrevValue));\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n );\n setPrevValue(_value);\n setUnformattedPrevValue(\n formatNumber(\n currentValue as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n setUnformattedValue(\n formatNumber(\n currentValue as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (typeof onSave === \"function\" && prevValue !== e.target.value) {\n onSave(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n setFocused(false);\n typeof onBlur === \"function\" && onBlur(e);\n },\n [\n onBlur,\n prevValue,\n unformattedPrevValue,\n onChange,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation,\n shortenThreshold,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const preformattedValue = String(unformattedValue)\n .replace(thousandSeparator, \"\")\n .replace(decimalSeparator, \".\");\n const numericValue = parseFloat(preformattedValue);\n\n if (isNaN(numericValue)) return;\n\n if (\n (max !== undefined && numericValue > Number(max)) ||\n (min !== undefined && numericValue < Number(min))\n ) {\n return;\n }\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n if (max === undefined || numericValue + step <= Number(max)) {\n newValue = numericValue + step;\n } else if (numericValue < Number(max)) {\n newValue = Number(max);\n } else {\n return;\n }\n } else if (type === \"decrement\") {\n if (min === undefined || numericValue - step >= Number(min)) {\n newValue = numericValue - step;\n } else if (numericValue > Number(min)) {\n newValue = Number(min);\n } else {\n return;\n }\n }\n\n let formattedValue;\n if (decimalLength !== undefined) {\n formattedValue = newValue.toFixed(decimalLength);\n } else {\n formattedValue = newValue.toFixed(2);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n formattedValue = Math.round(newValue).toString();\n }\n\n if (formattedValue.includes(\".\") || formattedValue.includes(\",\")) {\n formattedValue = formattedValue.replace(\".\", decimalSeparator);\n }\n\n setUnformattedValue(formattedValue);\n setCurrentValue(formattedValue);\n if (onChange) onChange(formattedValue);\n },\n [\n unformattedValue,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n onChange,\n step,\n min,\n max,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(e.target.value);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n updateValue(\"increment\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n updateValue(\"decrement\");\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if (e.key === \"Delete\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n if (e.key === \"Tab\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"v\") {\n e.preventDefault();\n return;\n }\n\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\n\n const input = e.target;\n const currentValue = input.value;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const newValue =\n currentValue.substring(0, start) + e.key + currentValue.substring(end);\n if (\n !validation(\n newValue,\n Boolean(disableMacros),\n decimalSeparator,\n decimalLength ?? 0,\n limit\n )\n ) {\n e.preventDefault();\n return;\n }\n },\n [\n decimalLength,\n decimalSeparator,\n disableMacros,\n inputRef,\n limit,\n min,\n onCancel,\n onEnterKeyPress,\n updateValue,\n validation,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n const inputValue = e.target.value;\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(\n /(\\d+(?:[.,]\\d+)?)([kmbtKMBT])/,\n (_, num, unit) => {\n const normalizedNum = num.replace(\",\", \".\");\n const parts = normalizedNum.split(\".\");\n const integerPart = parts[0];\n const fractionalPart = parts[1];\n\n const newInteger =\n parseInt(integerPart, 10) *\n currencyMultiplier[unit.toLowerCase()];\n\n let result = newInteger.toString();\n if (fractionalPart !== undefined) {\n result += decimalSeparator + fractionalPart;\n }\n return result;\n }\n );\n setCurrentValue(numericInput);\n setUnformattedValue(numericInput);\n if (onChange) onChange(numericInput);\n },\n [disableMacros, decimalSeparator, onChange]\n );\n\n const handleClick = useCallback(\n (e) => {\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [onClick]\n );\n\n const handleFocus = useCallback(() => {\n setCurrentValue(unformattedValue);\n setFocused(true);\n }, [unformattedValue]);\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n focused,\n unformattedValue,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAA0E,SAAAG,eAAAC,GAAA,EAAAC,CAAA,WAAAC,eAAA,CAAAF,GAAA,KAAAG,qBAAA,CAAAH,GAAA,EAAAC,CAAA,KAAAG,2BAAA,CAAAJ,GAAA,EAAAC,CAAA,KAAAI,gBAAA;AAAA,SAAAA,iBAAA,cAAAC,SAAA;AAAA,SAAAF,4BAAAG,CAAA,EAAAC,MAAA,SAAAD,CAAA,qBAAAA,CAAA,sBAAAE,iBAAA,CAAAF,CAAA,EAAAC,MAAA,OAAAE,CAAA,GAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,IAAA,CAAAP,CAAA,EAAAQ,KAAA,aAAAL,CAAA,iBAAAH,CAAA,CAAAS,WAAA,EAAAN,CAAA,GAAAH,CAAA,CAAAS,WAAA,CAAAC,IAAA,MAAAP,CAAA,cAAAA,CAAA,mBAAAQ,KAAA,CAAAC,IAAA,CAAAZ,CAAA,OAAAG,CAAA,+DAAAU,IAAA,CAAAV,CAAA,UAAAD,iBAAA,CAAAF,CAAA,EAAAC,MAAA;AAAA,SAAAC,kBAAAT,GAAA,EAAAqB,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAArB,GAAA,CAAAsB,MAAA,EAAAD,GAAA,GAAArB,GAAA,CAAAsB,MAAA,WAAArB,CAAA,MAAAsB,IAAA,OAAAL,KAAA,CAAAG,GAAA,GAAApB,CAAA,GAAAoB,GAAA,EAAApB,CAAA,IAAAsB,IAAA,CAAAtB,CAAA,IAAAD,GAAA,CAAAC,CAAA,UAAAsB,IAAA;AAAA,SAAApB,sBAAAqB,CAAA,EAAAC,CAAA,QAAAC,CAAA,WAAAF,CAAA,gCAAAG,MAAA,IAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,4BAAAE,CAAA,QAAAG,CAAA,EAAAnB,CAAA,EAAAT,CAAA,EAAA6B,CAAA,EAAAC,CAAA,OAAAC,CAAA,OAAAzB,CAAA,iBAAAN,CAAA,IAAAyB,CAAA,GAAAA,CAAA,CAAAZ,IAAA,CAAAU,CAAA,GAAAS,IAAA,QAAAR,CAAA,QAAAd,MAAA,CAAAe,CAAA,MAAAA,CAAA,UAAAM,CAAA,uBAAAA,CAAA,IAAAH,CAAA,GAAA5B,CAAA,CAAAa,IAAA,CAAAY,CAAA,GAAAQ,IAAA,MAAAH,CAAA,CAAAI,IAAA,CAAAN,CAAA,CAAAO,KAAA,GAAAL,CAAA,CAAAT,MAAA,KAAAG,CAAA,GAAAO,CAAA,iBAAAR,CAAA,IAAAjB,CAAA,OAAAG,CAAA,GAAAc,CAAA,yBAAAQ,CAAA,YAAAN,CAAA,CAAAW,MAAA,KAAAP,CAAA,GAAAJ,CAAA,CAAAW,MAAA,IAAA1B,MAAA,CAAAmB,CAAA,MAAAA,CAAA,2BAAAvB,CAAA,QAAAG,CAAA,aAAAqB,CAAA;AAAA,SAAA7B,gBAAAF,GAAA,QAAAkB,KAAA,CAAAoB,OAAA,CAAAtC,GAAA,UAAAA,GAAA;AAkCnE,IAAMuC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAAE,IAAA,EAwBzBC,QAA4C,EACzC;EAAA,IAAAC,qBAAA,GAAAF,IAAA,CAvBDG,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,GAAG,GAAAA,qBAAA;IAAAE,qBAAA,GAAAJ,IAAA,CACtBK,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,GAAG,GAAAA,qBAAA;IACvBE,mBAAmB,GAAAN,IAAA,CAAnBM,mBAAmB;IACnBC,aAAa,GAAAP,IAAA,CAAbO,aAAa;IACbC,aAAa,GAAAR,IAAA,CAAbQ,aAAa;IAAAC,UAAA,GAAAT,IAAA,CACbL,KAAK;IAALA,KAAK,GAAAc,UAAA,cAAG,EAAE,GAAAA,UAAA;IACVC,QAAQ,GAAAV,IAAA,CAARU,QAAQ;IACRC,MAAM,GAAAX,IAAA,CAANW,MAAM;IACNC,eAAe,GAAAZ,IAAA,CAAfY,eAAe;IACfC,OAAO,GAAAb,IAAA,CAAPa,OAAO;IACPC,QAAQ,GAAAd,IAAA,CAARc,QAAQ;IACRC,eAAe,GAAAf,IAAA,CAAfe,eAAe;IAAAC,SAAA,GAAAhB,IAAA,CACfiB,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,CAAC,GAAAA,SAAA;IAAAE,iBAAA,GAAAlB,IAAA,CACRmB,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,IAAI,GAAAA,iBAAA;IACnBE,KAAK,GAAApB,IAAA,CAALoB,KAAK;IAAAC,eAAA,GAAArB,IAAA,CACLsB,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAGE,0BAAmB,GAAAF,eAAA;IAChCG,GAAG,GAAAxB,IAAA,CAAHwB,GAAG;IACHC,GAAG,GAAAzB,IAAA,CAAHyB,GAAG;IACHC,MAAM,GAAA1B,IAAA,CAAN0B,MAAM;IACNC,MAAM,GAAA3B,IAAA,CAAN2B,MAAM;IAAAC,qBAAA,GAAA5B,IAAA,CACN6B,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;EAIzB,IAAME,UAAU,GACdL,GAAG,KAAKM,SAAS,IAAIP,GAAG,KAAKO,SAAS,IAAIC,MAAM,CAACP,GAAG,CAAC,IAAIO,MAAM,CAACR,GAAG,CAAC;EAEtE,IAAI,CAACM,UAAU,EAAE;IACfG,OAAO,CAACC,IAAI,CACV,0GACF,CAAC;EACH;EAEA,IAAAC,SAAA,GAAwC,IAAAC,eAAQ,EAAC;MAAA,OAC/C,IAAAC,2BAAY,EACV1C,KAAK,EACLU,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,GAAG,MAAM,GAAG,OAAO,EACtCuB,gBACF,CAAC;IAAA,CACH,CAAC;IAAAS,UAAA,GAAAhF,cAAA,CAAA6E,SAAA;IAVMI,YAAY,GAAAD,UAAA;IAAEE,eAAe,GAAAF,UAAA;EAWpC,IAAAG,UAAA,GAAkC,IAAAL,eAAQ,EAAC;MAAA,OACzC,IAAAC,2BAAY,EACV1C,KAAK,EACLU,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,GAAG,MAAM,GAAG,OAAO,EACtCuB,gBACF,CAAC;IAAA,CACH,CAAC;IAAAa,UAAA,GAAApF,cAAA,CAAAmF,UAAA;IAVME,SAAS,GAAAD,UAAA;IAAEE,YAAY,GAAAF,UAAA;EAW9B,IAAAG,UAAA,GAAgD,IAAAT,eAAQ,EAAC;MAAA,OACvD,IAAAC,2BAAY,EACV1C,KAAK,EACL,EAAE,EACFQ,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CAAC;IAAA,CACH,CAAC;IAAAiB,UAAA,GAAAxF,cAAA,CAAAuF,UAAA;IAVME,gBAAgB,GAAAD,UAAA;IAAEE,mBAAmB,GAAAF,UAAA;EAW5C,IAAAG,UAAA,GAAwD,IAAAb,eAAQ,EAAC;MAAA,OAC/D,IAAAC,2BAAY,EACV1C,KAAK,EACL,EAAE,EACFQ,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CAAC;IAAA,CACH,CAAC;IAAAqB,UAAA,GAAA5F,cAAA,CAAA2F,UAAA;IAVME,oBAAoB,GAAAD,UAAA;IAAEE,uBAAuB,GAAAF,UAAA;EAYpD,IAAAG,UAAA,GAA8B,IAAAjB,eAAQ,EAAC,KAAK,CAAC;IAAAkB,WAAA,GAAAhG,cAAA,CAAA+F,UAAA;IAAtCE,OAAO,GAAAD,WAAA;IAAEE,UAAU,GAAAF,WAAA;EAE1B,IAAAG,gBAAS,EAAC,YAAM;IACd,IAAI9D,KAAK,KAAKgD,SAAS,KAAK,CAACY,OAAO,IAAI5B,MAAM,CAAC,EAAE;MAC/Ca,eAAe,CACb,IAAAH,2BAAY,EACV1C,KAAK,EACLU,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,GAAG,MAAM,GAAG,OAAO,EACtCuB,gBACF,CACF,CAAC;MACDe,YAAY,CACV,IAAAP,2BAAY,EACV1C,KAAK,EACLU,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,GAAG,MAAM,GAAG,OAAO,EACtCuB,gBACF,CACF,CAAC;MACDmB,mBAAmB,CACjB,IAAAX,2BAAY,EACV1C,KAAK,EACL,EAAE,EACFQ,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CACF,CAAC;MACDuB,uBAAuB,CACrB,IAAAf,2BAAY,EACV1C,KAAK,EACL,EAAE,EACFQ,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CACF,CAAC;IACH;IACA;EACF,CAAC,EAAE,CACDvB,mBAAmB,EACnBD,iBAAiB,EACjBF,gBAAgB,EAChBK,aAAa,EACbW,YAAY,EACZxB,KAAK,EACL4D,OAAO,CACR,CAAC;EAEF,IAAMG,SAAS,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAE/B,IAAMC,UAAU,GAAG,IAAAC,kBAAW,EAC5B,UAACzE,CAAC,EAAK;IACL,IAAIsE,SAAS,CAACI,OAAO,EAAE;MACrBtB,eAAe,CAACG,SAAS,CAAC;MAC1BK,mBAAmB,CAACG,oBAAoB,CAAC;MACzC,IAAIzC,QAAQ,EAAEA,QAAQ,CAACqD,MAAM,CAACZ,oBAAoB,CAAC,CAAC;IACtD,CAAC,MAAM;MACL,IAAI/D,CAAC,CAAC4E,MAAM,CAACrE,KAAK,CAACsE,IAAI,CAAC,CAAC,CAACpF,MAAM,GAAG,CAAC,IAAI8D,SAAS,KAAKvD,CAAC,CAAC4E,MAAM,CAACrE,KAAK,EAAE;QACpE,IAAMuE,MAAM,GAAG,IAAA7B,2BAAY,EACzBE,YAAY,EACZlC,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,GAAG,MAAM,GAAG,OAAO,EACtCuB,gBACF,CAAC;QACDe,YAAY,CAACsB,MAAM,CAAC;QACpBd,uBAAuB,CACrB,IAAAf,2BAAY,EACVE,YAAY,EACZ,EAAE,EACFpC,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CACF,CAAC;QACDmB,mBAAmB,CACjB,IAAAX,2BAAY,EACVE,YAAY,EACZ,EAAE,EACFpC,gBAAgB,EAChB,KAAK,EACLK,aAAa,EACb,MAAM,EACNqB,gBACF,CACF,CAAC;QACDW,eAAe,CAAC0B,MAAM,CAAC;QACvB,OAAOvD,MAAM,KAAK,UAAU,IAAIA,MAAM,CAACvB,CAAC,CAAC;MAC3C,CAAC,MAAM;QACL,IAAI,CAAC2B,eAAe,EAAE;UACpByB,eAAe,CAACG,SAAS,CAAC;UAC1BK,mBAAmB,CAACG,oBAAoB,CAAC;UACzC,OAAOrC,QAAQ,KAAK,UAAU,IAAIA,QAAQ,CAAC1B,CAAC,CAAC;QAC/C,CAAC,MAAM;UACL,IAAI,OAAOuB,MAAM,KAAK,UAAU,IAAIgC,SAAS,KAAKvD,CAAC,CAAC4E,MAAM,CAACrE,KAAK,EAAE;YAChEgB,MAAM,CAACvB,CAAC,CAAC;UACX,CAAC,MAAM;YACL,OAAO0B,QAAQ,KAAK,UAAU,IAAIA,QAAQ,CAAC1B,CAAC,CAAC;UAC/C;QACF;MACF;IACF;IACAoE,UAAU,CAAC,KAAK,CAAC;IACjB,OAAO9B,MAAM,KAAK,UAAU,IAAIA,MAAM,CAACtC,CAAC,CAAC;EAC3C,CAAC,EACD,CACEsC,MAAM,EACNiB,SAAS,EACTQ,oBAAoB,EACpBzC,QAAQ,EACR6B,YAAY,EACZlC,iBAAiB,EACjBF,gBAAgB,EAChBgB,YAAY,EACZX,aAAa,EACbF,mBAAmB,EACnBuB,gBAAgB,EAChBlB,MAAM,EACNI,eAAe,EACfD,QAAQ,CAEZ,CAAC;EAED,IAAMqD,WAAW,GAAG,IAAAN,kBAAW,EAC7B,UAACO,IAA+B,EAAK;IACnC,IAAMC,iBAAiB,GAAGN,MAAM,CAAChB,gBAAgB,CAAC,CAC/CuB,OAAO,CAACjE,iBAAiB,EAAE,EAAE,CAAC,CAC9BiE,OAAO,CAACnE,gBAAgB,EAAE,GAAG,CAAC;IACjC,IAAMoE,YAAY,GAAGC,UAAU,CAACH,iBAAiB,CAAC;IAElD,IAAII,KAAK,CAACF,YAAY,CAAC,EAAE;IAEzB,IACG9C,GAAG,KAAKM,SAAS,IAAIwC,YAAY,GAAGvC,MAAM,CAACP,GAAG,CAAC,IAC/CD,GAAG,KAAKO,SAAS,IAAIwC,YAAY,GAAGvC,MAAM,CAACR,GAAG,CAAE,EACjD;MACA;IACF;IAEA,IAAIkD,QAAQ,GAAGH,YAAY;IAE3B,IAAIH,IAAI,KAAK,WAAW,EAAE;MACxB,IAAI3C,GAAG,KAAKM,SAAS,IAAIwC,YAAY,GAAGtD,IAAI,IAAIe,MAAM,CAACP,GAAG,CAAC,EAAE;QAC3DiD,QAAQ,GAAGH,YAAY,GAAGtD,IAAI;MAChC,CAAC,MAAM,IAAIsD,YAAY,GAAGvC,MAAM,CAACP,GAAG,CAAC,EAAE;QACrCiD,QAAQ,GAAG1C,MAAM,CAACP,GAAG,CAAC;MACxB,CAAC,MAAM;QACL;MACF;IACF,CAAC,MAAM,IAAI2C,IAAI,KAAK,WAAW,EAAE;MAC/B,IAAI5C,GAAG,KAAKO,SAAS,IAAIwC,YAAY,GAAGtD,IAAI,IAAIe,MAAM,CAACR,GAAG,CAAC,EAAE;QAC3DkD,QAAQ,GAAGH,YAAY,GAAGtD,IAAI;MAChC,CAAC,MAAM,IAAIsD,YAAY,GAAGvC,MAAM,CAACR,GAAG,CAAC,EAAE;QACrCkD,QAAQ,GAAG1C,MAAM,CAACR,GAAG,CAAC;MACxB,CAAC,MAAM;QACL;MACF;IACF;IAEA,IAAImD,cAAc;IAClB,IAAInE,aAAa,KAAKuB,SAAS,EAAE;MAC/B4C,cAAc,GAAGD,QAAQ,CAACE,OAAO,CAACpE,aAAa,CAAC;IAClD,CAAC,MAAM;MACLmE,cAAc,GAAGD,QAAQ,CAACE,OAAO,CAAC,CAAC,CAAC;IACtC;IAEA,IAAIpE,aAAa,KAAKuB,SAAS,IAAIvB,aAAa,KAAK,CAAC,EAAE;MACtDmE,cAAc,GAAGE,IAAI,CAACC,KAAK,CAACJ,QAAQ,CAAC,CAACtG,QAAQ,CAAC,CAAC;IAClD;IAEA,IAAIuG,cAAc,CAACI,QAAQ,CAAC,GAAG,CAAC,IAAIJ,cAAc,CAACI,QAAQ,CAAC,GAAG,CAAC,EAAE;MAChEJ,cAAc,GAAGA,cAAc,CAACL,OAAO,CAAC,GAAG,EAAEnE,gBAAgB,CAAC;IAChE;IAEA6C,mBAAmB,CAAC2B,cAAc,CAAC;IACnCnC,eAAe,CAACmC,cAAc,CAAC;IAC/B,IAAIjE,QAAQ,EAAEA,QAAQ,CAACiE,cAAc,CAAC;EACxC,CAAC,EACD,CACE5B,gBAAgB,EAChB1C,iBAAiB,EACjBF,gBAAgB,EAChBK,aAAa,EACbE,QAAQ,EACRO,IAAI,EACJO,GAAG,EACHC,GAAG,CAEP,CAAC;EAED,IAAMuD,aAAa,GAAG,IAAAnB,kBAAW,EAC/B,UAACzE,CAAC,EAAK;IACL,IAAIA,CAAC,CAAC6F,GAAG,KAAK,OAAO,EAAE;MACrB7F,CAAC,CAAC4E,MAAM,CAACkB,IAAI,CAAC,CAAC;MACf,IAAI,OAAOtE,eAAe,KAAK,UAAU,EACvCA,eAAe,CAACxB,CAAC,CAAC4E,MAAM,CAACrE,KAAK,CAAC;IACnC;IACA,IAAIP,CAAC,CAAC6F,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAI7F,CAAC,CAAC6F,GAAG,KAAK,YAAY,EAAE;MAC1B;IACF;IACA,IAAI7F,CAAC,CAAC6F,GAAG,KAAK,SAAS,EAAE;MACvB7F,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClBhB,WAAW,CAAC,WAAW,CAAC;IAC1B;IACA,IAAI/E,CAAC,CAAC6F,GAAG,KAAK,WAAW,EAAE;MACzB7F,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClBhB,WAAW,CAAC,WAAW,CAAC;IAC1B;IACA,IAAI/E,CAAC,CAAC6F,GAAG,KAAK,QAAQ,EAAE;MACtBvB,SAAS,CAACI,OAAO,GAAG,IAAI;MACxB1E,CAAC,CAAC4E,MAAM,CAACkB,IAAI,CAAC,CAAC;MACf,OAAOpE,QAAQ,KAAK,UAAU,IAAIA,QAAQ,CAAC1B,CAAC,CAAC;MAC7CsE,SAAS,CAACI,OAAO,GAAG,KAAK;IAC3B;IACA,IAAI1E,CAAC,CAAC6F,GAAG,KAAK,WAAW,EAAE;MACzB;IACF;IACA,IAAI7F,CAAC,CAAC6F,GAAG,KAAK,QAAQ,EAAE;MACtB;IACF;IACA,IAAI,CAAC7F,CAAC,CAACgG,OAAO,IAAIhG,CAAC,CAACiG,OAAO,KAAKjG,CAAC,CAAC6F,GAAG,KAAK,GAAG,EAAE;MAAA,IAAAK,iBAAA;MAC7C,CAAAA,iBAAA,GAAArF,QAAQ,CAAC6D,OAAO,cAAAwB,iBAAA,eAAhBA,iBAAA,CAAkBC,MAAM,CAAC,CAAC;MAC1B;IACF;IACA,IAAInG,CAAC,CAAC6F,GAAG,KAAK,KAAK,EAAE;MACnB;IACF;IACA,IAAI,CAAC7F,CAAC,CAACgG,OAAO,IAAIhG,CAAC,CAACiG,OAAO,KAAKjG,CAAC,CAAC6F,GAAG,KAAK,GAAG,EAAE;MAC7C7F,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClB;IACF;;IAEA;IACA,IAAI/F,CAAC,CAAC6F,GAAG,KAAK,GAAG,IAAIzD,GAAG,KAAKO,SAAS,IAAIC,MAAM,CAACR,GAAG,CAAC,IAAI,CAAC,EAAE;MAC1DpC,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClB;IACF;;IAEA;IACA,IAAI/F,CAAC,CAAC6F,GAAG,KAAK9E,gBAAgB,IAAIK,aAAa,KAAK,CAAC,EAAE;MACrDpB,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClB;IACF;IAEA,IAAMK,KAAK,GAAGpG,CAAC,CAAC4E,MAAM;IACtB,IAAMzB,YAAY,GAAGiD,KAAK,CAAC7F,KAAK;IAChC,IAAM8F,KAAK,GAAGD,KAAK,CAACE,cAAc;IAClC,IAAMC,GAAG,GAAGH,KAAK,CAACI,YAAY;IAC9B,IAAMlB,QAAQ,GACZnC,YAAY,CAACsD,SAAS,CAAC,CAAC,EAAEJ,KAAK,CAAC,GAAGrG,CAAC,CAAC6F,GAAG,GAAG1C,YAAY,CAACsD,SAAS,CAACF,GAAG,CAAC;IACxE,IACE,CAACrE,UAAU,CACToD,QAAQ,EACRoB,OAAO,CAACvF,aAAa,CAAC,EACtBJ,gBAAgB,EAChBK,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,CAAC,EAClBY,KACF,CAAC,EACD;MACAhC,CAAC,CAAC+F,cAAc,CAAC,CAAC;MAClB;IACF;EACF,CAAC,EACD,CACE3E,aAAa,EACbL,gBAAgB,EAChBI,aAAa,EACbN,QAAQ,EACRmB,KAAK,EACLI,GAAG,EACHV,QAAQ,EACRF,eAAe,EACfuD,WAAW,EACX7C,UAAU,CAEd,CAAC;EAED,IAAMyE,YAAY,GAAG,IAAAlC,kBAAW,EAC9B,UAACzE,CAAC,EAAK;IACL,IAAM4G,UAAU,GAAG5G,CAAC,CAAC4E,MAAM,CAACrE,KAAK;IACjC,IAAMsG,YAAY,GAAG1F,aAAa,GAC9ByF,UAAU,GACVA,UAAU,CAAC1B,OAAO,CAChB,+BAA+B,EAC/B,UAAC4B,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAK;MAChB,IAAMC,aAAa,GAAGF,GAAG,CAAC7B,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;MAC3C,IAAMgC,KAAK,GAAGD,aAAa,CAACE,KAAK,CAAC,GAAG,CAAC;MACtC,IAAMC,WAAW,GAAGF,KAAK,CAAC,CAAC,CAAC;MAC5B,IAAMG,cAAc,GAAGH,KAAK,CAAC,CAAC,CAAC;MAE/B,IAAMI,UAAU,GACdC,QAAQ,CAACH,WAAW,EAAE,EAAE,CAAC,GACzBI,iCAAkB,CAACR,IAAI,CAACS,WAAW,CAAC,CAAC,CAAC;MAExC,IAAIC,MAAM,GAAGJ,UAAU,CAACtI,QAAQ,CAAC,CAAC;MAClC,IAAIqI,cAAc,KAAK1E,SAAS,EAAE;QAChC+E,MAAM,IAAI3G,gBAAgB,GAAGsG,cAAc;MAC7C;MACA,OAAOK,MAAM;IACf,CACF,CAAC;IACLtE,eAAe,CAACyD,YAAY,CAAC;IAC7BjD,mBAAmB,CAACiD,YAAY,CAAC;IACjC,IAAIvF,QAAQ,EAAEA,QAAQ,CAACuF,YAAY,CAAC;EACtC,CAAC,EACD,CAAC1F,aAAa,EAAEJ,gBAAgB,EAAEO,QAAQ,CAC5C,CAAC;EAED,IAAMqG,WAAW,GAAG,IAAAlD,kBAAW,EAC7B,UAACzE,CAAC,EAAK;IACL,IAAI,OAAOyB,OAAO,KAAK,UAAU,EAAE;MACjCA,OAAO,CAACzB,CAAC,CAAC;IACZ;EACF,CAAC,EACD,CAACyB,OAAO,CACV,CAAC;EAED,IAAMmG,WAAW,GAAG,IAAAnD,kBAAW,EAAC,YAAM;IACpCrB,eAAe,CAACO,gBAAgB,CAAC;IACjCS,UAAU,CAAC,IAAI,CAAC;EAClB,CAAC,EAAE,CAACT,gBAAgB,CAAC,CAAC;EAEtB,IAAMkE,iBAAiB,GAAG,IAAApD,kBAAW,EAAC,YAAM;IAC1C,IAAI5D,QAAQ,CAAC6D,OAAO,EAAE;MAAA,IAAAoD,kBAAA;MACpB,CAAAA,kBAAA,GAAAjH,QAAQ,CAAC6D,OAAO,cAAAoD,kBAAA,eAAhBA,kBAAA,CAAkB3B,MAAM,CAAC,CAAC;IAC5B;EACF,CAAC,EAAE,CAACtF,QAAQ,CAAC,CAAC;EAEd,OAAO;IACLN,KAAK,EAAE4C,YAAY;IACnBb,MAAM,EAAEkC,UAAU;IAClBuD,SAAS,EAAEnC,aAAa;IACxBtE,QAAQ,EAAEqF,YAAY;IACtBlF,OAAO,EAAEkG,WAAW;IACpBK,aAAa,EAAEH,iBAAiB;IAChCI,OAAO,EAAEL,WAAW;IACpBzD,OAAO;IACPR;EACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"useInputNumber.js","names":["_react","require","_utils","_currencyUtils","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","r","l","t","Symbol","iterator","e","u","a","f","next","done","push","value","return","isArray","useInputNumber","exports","_ref","inputRef","_ref$decimalSeparator","decimalSeparator","_ref$thousandSeparato","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","_ref$value","undefined","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","_ref$step","step","_ref$trimDecimals","trimDecimals","limit","_ref$validation","validation","validateNumberInput","min","max","onBlur","update","_ref$shortenThreshold","shortenThreshold","isMaxValid","Number","console","warn","_useState","useState","_useState2","numericValue","setNumericValue","_useState3","_useState4","prevNumericValue","setPrevNumericValue","_useState5","formatNumber","_useState6","currentValue","setCurrentValue","_useState7","_useState8","prevValue","setPrevValue","_useState9","_useState10","unformattedValue","setUnformattedValue","_useState11","_useState12","unformattedPrevValue","setUnformattedPrevValue","_useState13","_useState14","focused","setFocused","useEffect","escapeRef","useRef","handleBlur","useCallback","current","target","trim","_value","_unformatedValue","_numericValue","getNumberFromString","updateValue","type","newValue","formattedValue","toFixed","Math","round","includes","replace","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericNewValue","numericInput","_","num","unit","normalizedNum","parts","split","integerPart","fractionalPart","newInteger","parseInt","currencyMultiplier","toLowerCase","parseFloat","concat","result","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport {\n currencyMultiplier,\n formatNumber,\n getNumberFromString,\n} from \"../utils/currencyUtils\";\n\nexport type Separators = \".\" | \",\" | \" \" | \"\";\n\nexport type InputNumberValue = number | undefined;\n\nexport interface IInputNumber {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n trimDecimals?: boolean;\n value?: number;\n step?: number;\n limit?: number;\n onEnterKeyPress?: (val: InputNumberValue) => void;\n onChange?: (val: InputNumberValue) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n onSave?: (e: Event) => void;\n onBlur?: (e: Event) => void;\n validation?: (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n ) => boolean;\n min?: number;\n max?: number;\n update?: boolean;\n shortenThreshold?: number;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value = undefined,\n onChange,\n onSave,\n onEnterKeyPress,\n onClick,\n onCancel,\n allowEmptyValue,\n step = 1,\n trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n onBlur,\n update,\n shortenThreshold = 1000,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [numericValue, setNumericValue] = useState(() => value);\n const [prevNumericValue, setPrevNumericValue] = useState(() => value);\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n\n const [focused, setFocused] = useState(false);\n\n useEffect(() => {\n if (value !== prevNumericValue && (!focused || update)) {\n setCurrentValue(\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n setPrevValue(\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n )\n );\n setUnformattedValue(\n formatNumber(\n value,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n )\n );\n setNumericValue(value);\n setPrevNumericValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n focused,\n ]);\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\n setNumericValue(prevNumericValue);\n if (onChange) onChange(prevNumericValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\",\n shortenThreshold\n );\n const _unformatedValue = formatNumber(\n currentValue,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\",\n shortenThreshold\n );\n const _numericValue = getNumberFromString(\n _unformatedValue,\n thousandSeparator,\n decimalSeparator\n );\n setPrevValue(_value);\n setUnformattedPrevValue(_unformatedValue);\n setUnformattedValue(_unformatedValue);\n setNumericValue(_numericValue);\n setPrevNumericValue(_numericValue);\n if (_numericValue !== prevNumericValue) onChange?.(_numericValue);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\n setNumericValue(prevNumericValue);\n onChange?.(prevNumericValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (prevValue !== e.target.value) {\n onSave?.(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n setFocused(false);\n typeof onBlur === \"function\" && onBlur(e);\n },\n [\n currentValue,\n onBlur,\n prevValue,\n unformattedPrevValue,\n prevNumericValue,\n onChange,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation,\n shortenThreshold,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n if (\n (max !== undefined && Number(numericValue) > max) ||\n (min !== undefined && Number(numericValue) < min)\n ) {\n return;\n }\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n if (max === undefined || Number(numericValue) + step <= max) {\n newValue = Number(numericValue) + step;\n } else if (Number(numericValue) < max) {\n newValue = max;\n } else {\n return;\n }\n } else if (type === \"decrement\") {\n if (min === undefined || Number(numericValue) - step >= min) {\n newValue = Number(numericValue) - step;\n } else if (Number(numericValue) > min) {\n newValue = min;\n } else {\n return;\n }\n }\n\n let formattedValue;\n if (decimalLength !== undefined) {\n formattedValue = Number(newValue).toFixed(decimalLength);\n } else {\n formattedValue = Number(newValue).toFixed(2);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n formattedValue = Math.round(Number(newValue)).toString();\n }\n\n if (formattedValue.includes(\".\") || formattedValue.includes(\",\")) {\n formattedValue = formattedValue.replace(\".\", decimalSeparator);\n }\n\n setNumericValue(newValue);\n setPrevNumericValue(newValue);\n setUnformattedValue(formattedValue);\n setCurrentValue(formattedValue);\n if (onChange) onChange(newValue);\n },\n [max, numericValue, min, decimalLength, onChange, step, decimalSeparator]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(numericValue);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n updateValue(\"increment\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n updateValue(\"decrement\");\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if (e.key === \"Delete\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n if (e.key === \"Tab\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"v\") {\n e.preventDefault();\n return;\n }\n\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\n\n const input = e.target;\n const currentValue = input.value;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const newValue =\n currentValue.substring(0, start) + e.key + currentValue.substring(end);\n if (\n !validation(\n newValue,\n Boolean(disableMacros),\n decimalSeparator,\n decimalLength ?? 0,\n limit\n )\n ) {\n e.preventDefault();\n return;\n }\n },\n [\n decimalLength,\n decimalSeparator,\n disableMacros,\n inputRef,\n limit,\n min,\n numericValue,\n onCancel,\n onEnterKeyPress,\n updateValue,\n validation,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n const inputValue = e.target.value;\n let numericNewValue: InputNumberValue = undefined;\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(\n /(\\d+(?:[.,]\\d+)?)([kmbtKMBT])/,\n (_, num, unit) => {\n const normalizedNum = num.replace(\",\", \".\");\n const parts = normalizedNum.split(\".\");\n const integerPart = parts[0];\n const fractionalPart = parts[1];\n const newInteger =\n parseInt(integerPart, 10) *\n currencyMultiplier[unit.toLowerCase()];\n\n numericNewValue = parseFloat(\n `${newInteger ? newInteger : 0}.${\n fractionalPart ? fractionalPart : 0\n }`\n );\n\n let result = newInteger.toString();\n if (fractionalPart !== undefined) {\n result += decimalSeparator + fractionalPart;\n }\n return result;\n }\n );\n\n if (numericNewValue === undefined) {\n if (inputValue) {\n numericNewValue = parseFloat(inputValue.replace(\",\", \".\"));\n } else {\n numericNewValue = undefined;\n }\n }\n\n setCurrentValue(numericInput);\n setUnformattedValue(numericInput);\n setNumericValue(numericNewValue);\n if (onChange && numericNewValue !== numericValue)\n onChange(numericNewValue);\n },\n [disableMacros, onChange, numericValue, decimalSeparator]\n );\n\n const handleClick = useCallback(\n (e) => {\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [onClick]\n );\n\n const handleFocus = useCallback(() => {\n setCurrentValue(unformattedValue);\n setFocused(true);\n }, [unformattedValue]);\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n focused,\n unformattedValue,\n numericValue,\n };\n};\n"],"mappings":"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"}
@@ -79,6 +79,7 @@ var formatNumber = exports.formatNumber = function formatNumber(n) {
79
79
  var decimalSpaces = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2;
80
80
  var format = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "long";
81
81
  var shortenThreshold = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1000;
82
+ if (typeof n === undefined || typeof n === null) return "";
82
83
  var number = getNumberFromString(n, thousandSeparator, decimalSeperator);
83
84
  if (isNaN(number)) {
84
85
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","exports","k","m","b","t","fixedDecimalSpaces","num","fixed","Math","pow","parts","toString","split","length","parseInt","floor","round","getNumberFromString","number","thousandSeparator","arguments","undefined","decimalSeparator","NaN","isNaN","Number","result","parseFloat","String","replaceAll","formatNumber","n","decimalSeperator","trimDecimals","decimalSpaces","format","shortenThreshold","isNegative","absoluteNumber","abs","suffixes","scale","shouldShorten","formattedNum","toFixed","numberWithSeparator","concat","x","replace","join","formatCurrency","currencyCode","currencyCodePosition"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["export const currencyMultiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport const fixedDecimalSpaces = (num: number, fixed: number) => {\n fixed = fixed || 0;\n fixed = Math.pow(10, fixed);\n const parts = num.toString().split(\".\");\n if (parts.length > 1 && parseInt(parts[1]) > fixed) {\n return Math.floor(num * fixed) / fixed;\n }\n return Math.round(num * fixed) / fixed;\n};\n\nexport const getNumberFromString = (\n number: string | number,\n thousandSeparator = \",\",\n decimalSeparator = \".\"\n) => {\n if (typeof number === \"string\" && number === \"\") {\n return NaN;\n }\n if (!isNaN(Number(number)) || typeof number === \"number\") {\n return Number(number);\n }\n if (decimalSeparator === \",\") {\n const parts = number.split(decimalSeparator);\n\n let result = 0;\n if (parts.length === 2) {\n result = parts[0]\n ? parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"))\n : 0;\n if (result < 0) {\n result -= parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n } else {\n result += parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n }\n return result;\n }\n if (parts.length === 1) {\n result = parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"));\n\n return result;\n }\n return 0;\n } else {\n return parseFloat(String(number).replaceAll(thousandSeparator, \"\"));\n }\n};\n\n/**\n * @function formatNumber\n * @description\n * Formats a number or string into a human-readable format with options for thousand separators,\n * decimal precision, and shortening the number using suffixes (K, M, B, T).\n * It can handle negative numbers and optionally trim decimals and set number of decimal places based on the configuration.\n *\n * @param {string | number} n - The number or string to be formatted.\n * @param {\",\" | \".\" | \" \" | \"\"} [thousandSeparator=\",\"] - The character to use as a thousand separator.\n * @param {\",\" | \".\"} [decimalSeperator=\".\"] - The character to use as a decimal separator.\n * @param {boolean} [trimDecimals=true] - Whether to trim decimals to the specified number of decimal spaces.\n * @param {number} [decimalSpaces=2] - The number of decimal spaces to keep in the formatted output.\n * @param {\"long\" | \"short\"} [format=\"long\"] - The format type, either \"long\" for full numbers or \"short\" for shortened numbers with suffixes.\n * @param {number} [shortenThreshold=1000] - The minimum numeric value at which the number should be shortened\n * using suffixes. Numbers below this threshold will always be shown in long format.\n *\n * @returns {string} - The formatted number as a string with separators and potentially with decimals.\n *\n * @example\n * formatNumber(1500) // \"1,500.00\"\n * formatNumber(1500000, \",\", \".\", true, 2, \"short\") // \"1.5M\"\n */\nexport const formatNumber = (\n n: string | number,\n thousandSeparator = \",\",\n decimalSeperator = \".\",\n trimDecimals = true,\n decimalSpaces = 2,\n format = \"long\",\n shortenThreshold = 1000\n) => {\n const number = getNumberFromString(n, thousandSeparator, decimalSeperator);\n\n if (isNaN(number)) {\n return \"\";\n }\n\n const isNegative = number < 0;\n let absoluteNumber = Math.abs(number);\n\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let scale = 0;\n\n const shouldShorten =\n absoluteNumber >= shortenThreshold && format === \"short\";\n\n while (\n shouldShorten &&\n scale < suffixes.length - 1 &&\n absoluteNumber >= 1000\n ) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n let formattedNum =\n scale === 0\n ? fixedDecimalSpaces(absoluteNumber, decimalSpaces)\n : parseFloat(absoluteNumber.toFixed(1));\n\n if (formattedNum === 1000 && scale > 0 && scale < 4) {\n formattedNum = 1;\n scale++;\n }\n\n const result = numberWithSeparator(\n trimDecimals ? formattedNum : formattedNum.toFixed(decimalSpaces),\n thousandSeparator,\n decimalSeperator\n );\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator = \",\",\n decimalSeparator = \".\",\n format = true\n) => {\n if (!format) {\n return x;\n }\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(decimalSeparator);\n};\n\n/**\n * @function formatCurrency\n * @description\n * Formats a number or string as a currency string with options for thousand separators,\n * decimal precision, currency code, currency code position, and the use of suffixes (K, M, B, T) if needed.\n * It can handle negative values and supports customization of the currency code and its position.\n *\n * @param {string | number} n - The number or string to be formatted as currency.\n * @param {\",\" | \".\" | \" \" | \"\"} [thousandSeparator=\",\"] - The character to use as a thousand separator.\n * @param {\",\" | \".\"} [decimalSeperator=\".\"] - The character to use as a decimal separator.\n * @param {boolean} [trimDecimals=false] - Whether to trim decimals to the specified number of decimal spaces.\n * @param {number} [decimalSpaces=2] - The number of decimal spaces to keep in the formatted output.\n * @param {\"long\" | \"short\"} [format=\"long\"] - The format type, either \"long\" for full numbers or \"short\" for shortened numbers with suffixes.\n * @param {string} [currencyCode=\"\"] - The currency code to append or prepend to the formatted number.\n * @param {\"right\" | \"left\"} [currencyCodePosition=\"right\"] - The position of the currency code relative to the formatted number.\n *\n * @returns {string} - The formatted currency string, including the currency code if provided.\n *\n * @example\n * formatCurrency(1500, \",\", \".\", false, 2, \"long\", \"USD\", \"right\") // \"1,500.00 USD\"\n * formatCurrency(1500000, \",\", \".\", true, 2, \"short\", \"JPY\", \"left\") // \"JPY 1.5M\"\n */\nexport const formatCurrency = (\n n: string | number,\n thousandSeparator = \",\",\n decimalSeperator = \".\",\n trimDecimals = false,\n decimalSpaces = 2,\n format = \"long\",\n currencyCode = \"\",\n currencyCodePosition = \"right\"\n) => {\n const formattedNum = formatNumber(\n n,\n thousandSeparator,\n decimalSeperator,\n trimDecimals,\n decimalSpaces,\n format,\n 10000\n );\n\n if (!currencyCode) {\n return formattedNum;\n }\n\n return currencyCodePosition === \"right\"\n ? `${formattedNum} ${currencyCode}`\n : `${currencyCode} ${formattedNum}`;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","exports","k","m","b","t","fixedDecimalSpaces","num","fixed","Math","pow","parts","toString","split","length","parseInt","floor","round","getNumberFromString","number","thousandSeparator","arguments","undefined","decimalSeparator","NaN","isNaN","Number","result","parseFloat","String","replaceAll","formatNumber","n","decimalSeperator","trimDecimals","decimalSpaces","format","shortenThreshold","isNegative","absoluteNumber","abs","suffixes","scale","shouldShorten","formattedNum","toFixed","numberWithSeparator","concat","x","replace","join","formatCurrency","currencyCode","currencyCodePosition"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["export const currencyMultiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport const fixedDecimalSpaces = (num: number, fixed: number) => {\n fixed = fixed || 0;\n fixed = Math.pow(10, fixed);\n const parts = num.toString().split(\".\");\n if (parts.length > 1 && parseInt(parts[1]) > fixed) {\n return Math.floor(num * fixed) / fixed;\n }\n return Math.round(num * fixed) / fixed;\n};\n\nexport const getNumberFromString = (\n number: string | number,\n thousandSeparator = \",\",\n decimalSeparator = \".\"\n) => {\n if (typeof number === \"string\" && number === \"\") {\n return NaN;\n }\n if (!isNaN(Number(number)) || typeof number === \"number\") {\n return Number(number);\n }\n if (decimalSeparator === \",\") {\n const parts = number.split(decimalSeparator);\n\n let result = 0;\n if (parts.length === 2) {\n result = parts[0]\n ? parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"))\n : 0;\n if (result < 0) {\n result -= parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n } else {\n result += parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n }\n return result;\n }\n if (parts.length === 1) {\n result = parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"));\n\n return result;\n }\n return 0;\n } else {\n return parseFloat(String(number).replaceAll(thousandSeparator, \"\"));\n }\n};\n\n/**\n * @function formatNumber\n * @description\n * Formats a number or string into a human-readable format with options for thousand separators,\n * decimal precision, and shortening the number using suffixes (K, M, B, T).\n * It can handle negative numbers and optionally trim decimals and set number of decimal places based on the configuration.\n *\n * @param {string | number} n - The number or string to be formatted.\n * @param {\",\" | \".\" | \" \" | \"\"} [thousandSeparator=\",\"] - The character to use as a thousand separator.\n * @param {\",\" | \".\"} [decimalSeperator=\".\"] - The character to use as a decimal separator.\n * @param {boolean} [trimDecimals=true] - Whether to trim decimals to the specified number of decimal spaces.\n * @param {number} [decimalSpaces=2] - The number of decimal spaces to keep in the formatted output.\n * @param {\"long\" | \"short\"} [format=\"long\"] - The format type, either \"long\" for full numbers or \"short\" for shortened numbers with suffixes.\n * @param {number} [shortenThreshold=1000] - The minimum numeric value at which the number should be shortened\n * using suffixes. Numbers below this threshold will always be shown in long format.\n *\n * @returns {string} - The formatted number as a string with separators and potentially with decimals.\n *\n * @example\n * formatNumber(1500) // \"1,500.00\"\n * formatNumber(1500000, \",\", \".\", true, 2, \"short\") // \"1.5M\"\n */\nexport const formatNumber = (\n n?: string | number,\n thousandSeparator = \",\",\n decimalSeperator = \".\",\n trimDecimals = true,\n decimalSpaces = 2,\n format = \"long\",\n shortenThreshold = 1000\n) => {\n if (typeof n === undefined || typeof n === null) return \"\";\n\n const number = getNumberFromString(\n n as string,\n thousandSeparator,\n decimalSeperator\n );\n\n if (isNaN(number)) {\n return \"\";\n }\n\n const isNegative = number < 0;\n let absoluteNumber = Math.abs(number);\n\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let scale = 0;\n\n const shouldShorten =\n absoluteNumber >= shortenThreshold && format === \"short\";\n\n while (\n shouldShorten &&\n scale < suffixes.length - 1 &&\n absoluteNumber >= 1000\n ) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n let formattedNum =\n scale === 0\n ? fixedDecimalSpaces(absoluteNumber, decimalSpaces)\n : parseFloat(absoluteNumber.toFixed(1));\n\n if (formattedNum === 1000 && scale > 0 && scale < 4) {\n formattedNum = 1;\n scale++;\n }\n\n const result = numberWithSeparator(\n trimDecimals ? formattedNum : formattedNum.toFixed(decimalSpaces),\n thousandSeparator,\n decimalSeperator\n );\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator = \",\",\n decimalSeparator = \".\",\n format = true\n) => {\n if (!format) {\n return x;\n }\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(decimalSeparator);\n};\n\n/**\n * @function formatCurrency\n * @description\n * Formats a number or string as a currency string with options for thousand separators,\n * decimal precision, currency code, currency code position, and the use of suffixes (K, M, B, T) if needed.\n * It can handle negative values and supports customization of the currency code and its position.\n *\n * @param {string | number} n - The number or string to be formatted as currency.\n * @param {\",\" | \".\" | \" \" | \"\"} [thousandSeparator=\",\"] - The character to use as a thousand separator.\n * @param {\",\" | \".\"} [decimalSeperator=\".\"] - The character to use as a decimal separator.\n * @param {boolean} [trimDecimals=false] - Whether to trim decimals to the specified number of decimal spaces.\n * @param {number} [decimalSpaces=2] - The number of decimal spaces to keep in the formatted output.\n * @param {\"long\" | \"short\"} [format=\"long\"] - The format type, either \"long\" for full numbers or \"short\" for shortened numbers with suffixes.\n * @param {string} [currencyCode=\"\"] - The currency code to append or prepend to the formatted number.\n * @param {\"right\" | \"left\"} [currencyCodePosition=\"right\"] - The position of the currency code relative to the formatted number.\n *\n * @returns {string} - The formatted currency string, including the currency code if provided.\n *\n * @example\n * formatCurrency(1500, \",\", \".\", false, 2, \"long\", \"USD\", \"right\") // \"1,500.00 USD\"\n * formatCurrency(1500000, \",\", \".\", true, 2, \"short\", \"JPY\", \"left\") // \"JPY 1.5M\"\n */\nexport const formatCurrency = (\n n: string | number,\n thousandSeparator = \",\",\n decimalSeperator = \".\",\n trimDecimals = false,\n decimalSpaces = 2,\n format = \"long\",\n currencyCode = \"\",\n currencyCodePosition = \"right\"\n) => {\n const formattedNum = formatNumber(\n n,\n thousandSeparator,\n decimalSeperator,\n trimDecimals,\n decimalSpaces,\n format,\n 10000\n );\n\n if (!currencyCode) {\n return formattedNum;\n }\n\n return currencyCodePosition === \"right\"\n ? `${formattedNum} ${currencyCode}`\n : `${currencyCode} ${formattedNum}`;\n};\n"],"mappings":"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"}
@@ -35,6 +35,13 @@ describe("format currency with thousandseparator set to ',' and decimalSeparator
35
35
  thousandSeparator: ".",
36
36
  decimalSeparator: ","
37
37
  }, "900,25"], [{
38
+ value: 0,
39
+ thousandSeparator: ".",
40
+ decimalSeparator: ",",
41
+ trimDecimals: false,
42
+ format: "long",
43
+ decimalSpaces: 2
44
+ }, "0,00"], [{
38
45
  value: "900,25",
39
46
  thousandSeparator: ".",
40
47
  decimalSeparator: ","
@@ -351,6 +358,15 @@ describe("format currency with thousandseparator set to ',' and decimalSeparator
351
358
  currencyCode: "",
352
359
  currencyCodePosition: "right"
353
360
  }, ""], [{
361
+ value: 0,
362
+ thousandSeparator: ",",
363
+ decimalSeparator: ".",
364
+ trimDecimals: false,
365
+ decimalSpaces: 2,
366
+ format: "long",
367
+ currencyCode: "USD",
368
+ currencyCodePosition: "right"
369
+ }, "0.00 USD"], [{
354
370
  value: "10",
355
371
  thousandSeparator: ",",
356
372
  decimalSeparator: ".",