@alto-avios/alto-ui 2.4.0 → 3.1.0
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.
- package/README.md +13 -0
- package/dist/assets/AviosCurrencySymbol.css +1 -0
- package/dist/assets/Badge.css +1 -1
- package/dist/assets/Button.css +1 -1
- package/dist/assets/CardSection.css +1 -1
- package/dist/assets/CreditCardNumberField.css +1 -0
- package/dist/assets/DateField.css +1 -1
- package/dist/assets/DetailsDisclosure.css +1 -0
- package/dist/assets/Dialog.css +1 -0
- package/dist/assets/Fieldset.css +1 -0
- package/dist/assets/FieldsetHeader.css +1 -0
- package/dist/assets/Form.css +1 -0
- package/dist/assets/Icon.css +1 -0
- package/dist/assets/IconBackdrop.css +1 -0
- package/dist/assets/IconButton.css +1 -1
- package/dist/assets/Image.css +1 -0
- package/dist/assets/Link.css +1 -1
- package/dist/assets/NumberField.css +1 -1
- package/dist/assets/PasswordField.css +1 -0
- package/dist/assets/PhoneNumberField.css +1 -0
- package/dist/assets/Popover.css +1 -0
- package/dist/assets/Section.css +1 -1
- package/dist/assets/SelectNative.css +1 -0
- package/dist/assets/Slider.css +1 -0
- package/dist/assets/Switch.css +1 -0
- package/dist/assets/TextAreaField.css +1 -1
- package/dist/assets/ToggleButton.css +1 -1
- package/dist/assets/ToggleIconButton.css +1 -1
- package/dist/assets/backgroundColor.css +1 -0
- package/dist/assets/flex.css +1 -1
- package/dist/assets/focusStyles.css +1 -1
- package/dist/assets/foregroundColor.css +1 -0
- package/dist/assets/global.css +1 -1
- package/dist/assets/padding.css +1 -1
- package/dist/components/AviosCurrencySymbol/AviosCurrencySymbol.d.ts +25 -0
- package/dist/components/AviosCurrencySymbol/AviosCurrencySymbol.js +80 -0
- package/dist/components/AviosCurrencySymbol/AviosCurrencySymbol.js.map +1 -0
- package/dist/components/AviosCurrencySymbol/index.d.ts +1 -0
- package/dist/components/AviosCurrencySymbol/index.js +5 -0
- package/dist/components/Badge/Badge.js +11 -11
- package/dist/components/Box/Box.d.ts +21 -2
- package/dist/components/Box/Box.js +16 -4
- package/dist/components/Box/Box.js.map +1 -1
- package/dist/components/Button/Button.d.ts +128 -36
- package/dist/components/Button/Button.js +129 -66
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/CardSection/CardSection.d.ts +12 -6
- package/dist/components/CardSection/CardSection.js +9 -7
- package/dist/components/CardSection/CardSection.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +3 -1
- package/dist/components/Checkbox/Checkbox.js +1 -1
- package/dist/components/ClearFieldButton/ClearFieldButton.d.ts +4 -6
- package/dist/components/CreditCardNumberField/CreditCardNumberField.d.ts +29 -0
- package/dist/components/CreditCardNumberField/CreditCardNumberField.js +45 -0
- package/dist/components/CreditCardNumberField/CreditCardNumberField.js.map +1 -0
- package/dist/components/CreditCardNumberField/index.d.ts +1 -0
- package/dist/components/CreditCardNumberField/index.js +5 -0
- package/dist/components/CreditCardNumberField/index.js.map +1 -0
- package/dist/components/DateField/DateField.d.ts +4 -24
- package/dist/components/DateField/DateField.js +7 -19
- package/dist/components/DateField/DateField.js.map +1 -1
- package/dist/components/DetailsDisclosure/DetailsDisclosure.d.ts +33 -0
- package/dist/components/DetailsDisclosure/DetailsDisclosure.js +39 -0
- package/dist/components/DetailsDisclosure/DetailsDisclosure.js.map +1 -0
- package/dist/components/DetailsDisclosure/index.d.ts +2 -0
- package/dist/components/DetailsDisclosure/index.js +5 -0
- package/dist/components/DetailsDisclosure/index.js.map +1 -0
- package/dist/components/Dialog/Dialog.d.ts +46 -0
- package/dist/components/Dialog/Dialog.js +117 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +1 -0
- package/dist/components/Dialog/index.js +5 -0
- package/dist/components/Dialog/index.js.map +1 -0
- package/dist/components/FieldError/FieldError.d.ts +1 -1
- package/dist/components/FieldError/FieldError.js +11 -8
- package/dist/components/FieldError/FieldError.js.map +1 -1
- package/dist/components/FieldHeader/index.d.ts +1 -0
- package/dist/components/Fieldset/Fieldset.d.ts +18 -0
- package/dist/components/Fieldset/Fieldset.js +24 -0
- package/dist/components/Fieldset/Fieldset.js.map +1 -0
- package/dist/components/Fieldset/index.d.ts +2 -0
- package/dist/components/Fieldset/index.js +5 -0
- package/dist/components/Fieldset/index.js.map +1 -0
- package/dist/components/FieldsetHeader/FieldsetHeader.d.ts +7 -0
- package/dist/components/FieldsetHeader/FieldsetHeader.js +21 -0
- package/dist/components/FieldsetHeader/FieldsetHeader.js.map +1 -0
- package/dist/components/FieldsetHeader/index.d.ts +1 -0
- package/dist/components/FieldsetHeader/index.js +5 -0
- package/dist/components/FieldsetHeader/index.js.map +1 -0
- package/dist/components/Form/Form.d.ts +7 -0
- package/dist/components/Form/Form.js +17 -0
- package/dist/components/Form/Form.js.map +1 -0
- package/dist/components/Form/index.d.ts +1 -0
- package/dist/components/Form/index.js +5 -0
- package/dist/components/Form/index.js.map +1 -0
- package/dist/components/Heading/Heading.d.ts +26 -7
- package/dist/components/Heading/Heading.js +12 -5
- package/dist/components/Heading/Heading.js.map +1 -1
- package/dist/components/Icon/Icon.d.ts +30 -4
- package/dist/components/Icon/Icon.js +98 -5
- package/dist/components/Icon/Icon.js.map +1 -1
- package/dist/components/IconBackdrop/IconBackdrop.d.ts +24 -0
- package/dist/components/IconBackdrop/IconBackdrop.js +34 -0
- package/dist/components/IconBackdrop/IconBackdrop.js.map +1 -0
- package/dist/components/IconBackdrop/index.d.ts +1 -0
- package/dist/components/IconBackdrop/index.js +5 -0
- package/dist/components/IconBackdrop/index.js.map +1 -0
- package/dist/components/IconButton/IconButton.d.ts +13 -4
- package/dist/components/IconButton/IconButton.js +40 -31
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Image/Image.d.ts +24 -0
- package/dist/components/Image/Image.js +135 -0
- package/dist/components/Image/Image.js.map +1 -0
- package/dist/components/Image/index.d.ts +1 -0
- package/dist/components/Image/index.js +5 -0
- package/dist/components/Image/index.js.map +1 -0
- package/dist/components/Link/Link.d.ts +32 -34
- package/dist/components/Link/Link.js +34 -22
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/NumberField/NumberField.d.ts +4 -34
- package/dist/components/NumberField/NumberField.js +11 -19
- package/dist/components/NumberField/NumberField.js.map +1 -1
- package/dist/components/Paragraph/Paragraph.d.ts +9 -5
- package/dist/components/Paragraph/Paragraph.js +9 -4
- package/dist/components/Paragraph/Paragraph.js.map +1 -1
- package/dist/components/PasswordField/PasswordField.d.ts +30 -0
- package/dist/components/PasswordField/PasswordField.js +104 -0
- package/dist/components/PasswordField/PasswordField.js.map +1 -0
- package/dist/components/PasswordField/index.d.ts +1 -0
- package/dist/components/PasswordField/index.js +5 -0
- package/dist/components/PasswordField/index.js.map +1 -0
- package/dist/components/PhoneNumberField/PhoneNumberField.d.ts +53 -0
- package/dist/components/PhoneNumberField/PhoneNumberField.js +91 -0
- package/dist/components/PhoneNumberField/PhoneNumberField.js.map +1 -0
- package/dist/components/PhoneNumberField/index.d.ts +3 -0
- package/dist/components/PhoneNumberField/index.js +7 -0
- package/dist/components/PhoneNumberField/index.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts +16 -0
- package/dist/components/Popover/Popover.js +68 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/index.d.ts +1 -0
- package/dist/components/Popover/index.js +5 -0
- package/dist/components/Popover/index.js.map +1 -0
- package/dist/components/Section/Section.d.ts +4 -3
- package/dist/components/Section/Section.js +18 -13
- package/dist/components/Section/Section.js.map +1 -1
- package/dist/components/SelectNative/SelectNative.d.ts +56 -0
- package/dist/components/SelectNative/SelectNative.js +40 -0
- package/dist/components/SelectNative/SelectNative.js.map +1 -0
- package/dist/components/SelectNative/index.d.ts +1 -0
- package/dist/components/SelectNative/index.js +5 -0
- package/dist/components/SelectNative/index.js.map +1 -0
- package/dist/components/Slider/Slider.d.ts +33 -0
- package/dist/components/Slider/Slider.js +113 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/index.d.ts +1 -0
- package/dist/components/Slider/index.js +5 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/SubHeading/SubHeading.d.ts +26 -5
- package/dist/components/SubHeading/SubHeading.js +9 -4
- package/dist/components/SubHeading/SubHeading.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +7 -0
- package/dist/components/Switch/Switch.js +18 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/index.d.ts +1 -0
- package/dist/components/Switch/index.js +5 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/TagGroup/TagGroup.js +1 -1
- package/dist/components/TextAreaField/TextAreaField.d.ts +1 -1
- package/dist/components/TextAreaField/TextAreaField.js +6 -18
- package/dist/components/TextAreaField/TextAreaField.js.map +1 -1
- package/dist/components/TextField/TextField.d.ts +4 -31
- package/dist/components/TextField/TextField.js +7 -17
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/ToggleButton/ToggleButton.js +6 -6
- package/dist/components/ToggleIconButton/ToggleIconButton.d.ts +9 -1
- package/dist/components/ToggleIconButton/ToggleIconButton.js +15 -8
- package/dist/components/ToggleIconButton/ToggleIconButton.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +5 -1
- package/dist/components/Tooltip/Tooltip.js +3 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/_base/Field/Field.d.ts +16 -0
- package/dist/components/_base/Field/Field.js +29 -0
- package/dist/components/_base/Field/Field.js.map +1 -0
- package/dist/components/_base/Field/index.d.ts +2 -0
- package/dist/components/_base/Field/index.js +5 -0
- package/dist/components/_base/Field/index.js.map +1 -0
- package/dist/components/index.d.ts +15 -1
- package/dist/components/index.js +41 -14
- package/dist/components/index.js.map +1 -1
- package/dist/index.js +41 -14
- package/dist/index.js.map +1 -1
- package/dist/react-number-format.es-DMLgWFZX.js +760 -0
- package/dist/react-number-format.es-DMLgWFZX.js.map +1 -0
- package/dist/utils/backgroundColor/backgroundColor.d.ts +8 -0
- package/dist/utils/backgroundColor/backgroundColor.js +102 -0
- package/dist/utils/backgroundColor/backgroundColor.js.map +1 -0
- package/dist/utils/border/border.d.ts +3 -3
- package/dist/utils/creditCard/creditCard.d.ts +7 -0
- package/dist/utils/creditCard/creditCard.js +25 -0
- package/dist/utils/creditCard/creditCard.js.map +1 -0
- package/dist/utils/flex/flex.d.ts +3 -3
- package/dist/utils/flex/flex.js +49 -35
- package/dist/utils/flex/flex.js.map +1 -1
- package/dist/utils/focus/focusStyles.d.ts +1 -1
- package/dist/utils/focus/focusStyles.js +2 -2
- package/dist/utils/foregroundColour/foregroundColor.d.ts +8 -0
- package/dist/utils/foregroundColour/foregroundColor.js +125 -0
- package/dist/utils/foregroundColour/foregroundColor.js.map +1 -0
- package/dist/utils/forms/formProps.d.ts +2 -0
- package/dist/utils/forms/formProps.js +2 -0
- package/dist/utils/forms/formProps.js.map +1 -0
- package/dist/utils/padding/padding.d.ts +7 -7
- package/dist/utils/padding/padding.js +98 -98
- package/dist/utils/phoneNumber/phoneNumber.d.ts +24 -0
- package/dist/utils/phoneNumber/phoneNumber.js +566 -0
- package/dist/utils/phoneNumber/phoneNumber.js.map +1 -0
- package/dist/utils/stories/iconPropsArgTypes.js +50 -13
- package/dist/utils/stories/iconPropsArgTypes.js.map +1 -1
- package/package.json +39 -19
- package/dist/assets/NewButton.css +0 -1
- package/dist/assets/backgroundColour.css +0 -1
- package/dist/assets/fgColor.css +0 -1
- package/dist/components/NewButton/NewButton.d.ts +0 -87
- package/dist/components/NewButton/NewButton.js +0 -189
- package/dist/components/NewButton/NewButton.js.map +0 -1
- package/dist/components/NewButton/index.d.ts +0 -1
- package/dist/components/NewButton/index.js +0 -5
- package/dist/utils/backgroundColour/backgroundColour.d.ts +0 -8
- package/dist/utils/backgroundColour/backgroundColour.js +0 -102
- package/dist/utils/backgroundColour/backgroundColour.js.map +0 -1
- package/dist/utils/fgColour/fgColor.d.ts +0 -5
- package/dist/utils/fgColour/fgColor.js +0 -84
- package/dist/utils/fgColour/fgColor.js.map +0 -1
- /package/dist/components/{NewButton → AviosCurrencySymbol}/index.js.map +0 -0
|
@@ -0,0 +1,760 @@
|
|
|
1
|
+
import React, { useRef, useState, useEffect, useMemo, useLayoutEffect } from "react";
|
|
2
|
+
function __rest(s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) {
|
|
5
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") {
|
|
10
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
11
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
|
|
12
|
+
t[p[i]] = s[p[i]];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return t;
|
|
17
|
+
}
|
|
18
|
+
var SourceType;
|
|
19
|
+
(function(SourceType2) {
|
|
20
|
+
SourceType2["event"] = "event";
|
|
21
|
+
SourceType2["props"] = "prop";
|
|
22
|
+
})(SourceType || (SourceType = {}));
|
|
23
|
+
function noop() {
|
|
24
|
+
}
|
|
25
|
+
function memoizeOnce(cb) {
|
|
26
|
+
var lastArgs;
|
|
27
|
+
var lastValue = void 0;
|
|
28
|
+
return function() {
|
|
29
|
+
var args = [], len = arguments.length;
|
|
30
|
+
while (len--) args[len] = arguments[len];
|
|
31
|
+
if (lastArgs && args.length === lastArgs.length && args.every(function(value, index) {
|
|
32
|
+
return value === lastArgs[index];
|
|
33
|
+
})) {
|
|
34
|
+
return lastValue;
|
|
35
|
+
}
|
|
36
|
+
lastArgs = args;
|
|
37
|
+
lastValue = cb.apply(void 0, args);
|
|
38
|
+
return lastValue;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function charIsNumber(char) {
|
|
42
|
+
return !!(char || "").match(/\d/);
|
|
43
|
+
}
|
|
44
|
+
function isNil(val) {
|
|
45
|
+
return val === null || val === void 0;
|
|
46
|
+
}
|
|
47
|
+
function isNanValue(val) {
|
|
48
|
+
return typeof val === "number" && isNaN(val);
|
|
49
|
+
}
|
|
50
|
+
function isNotValidValue(val) {
|
|
51
|
+
return isNil(val) || isNanValue(val) || typeof val === "number" && !isFinite(val);
|
|
52
|
+
}
|
|
53
|
+
function usePersistentCallback(cb) {
|
|
54
|
+
var callbackRef = useRef(cb);
|
|
55
|
+
callbackRef.current = cb;
|
|
56
|
+
var persistentCbRef = useRef(function() {
|
|
57
|
+
var args = [], len = arguments.length;
|
|
58
|
+
while (len--) args[len] = arguments[len];
|
|
59
|
+
return callbackRef.current.apply(callbackRef, args);
|
|
60
|
+
});
|
|
61
|
+
return persistentCbRef.current;
|
|
62
|
+
}
|
|
63
|
+
function repeat(str, count) {
|
|
64
|
+
return Array(count + 1).join(str);
|
|
65
|
+
}
|
|
66
|
+
function toNumericString(num) {
|
|
67
|
+
var _num = num + "";
|
|
68
|
+
var sign = _num[0] === "-" ? "-" : "";
|
|
69
|
+
if (sign) {
|
|
70
|
+
_num = _num.substring(1);
|
|
71
|
+
}
|
|
72
|
+
var ref = _num.split(/[eE]/g);
|
|
73
|
+
var coefficient = ref[0];
|
|
74
|
+
var exponent = ref[1];
|
|
75
|
+
exponent = Number(exponent);
|
|
76
|
+
if (!exponent) {
|
|
77
|
+
return sign + coefficient;
|
|
78
|
+
}
|
|
79
|
+
coefficient = coefficient.replace(".", "");
|
|
80
|
+
var decimalIndex = 1 + exponent;
|
|
81
|
+
var coffiecientLn = coefficient.length;
|
|
82
|
+
if (decimalIndex < 0) {
|
|
83
|
+
coefficient = "0." + repeat("0", Math.abs(decimalIndex)) + coefficient;
|
|
84
|
+
} else if (decimalIndex >= coffiecientLn) {
|
|
85
|
+
coefficient = coefficient + repeat("0", decimalIndex - coffiecientLn);
|
|
86
|
+
} else {
|
|
87
|
+
coefficient = (coefficient.substring(0, decimalIndex) || "0") + "." + coefficient.substring(decimalIndex);
|
|
88
|
+
}
|
|
89
|
+
return sign + coefficient;
|
|
90
|
+
}
|
|
91
|
+
function setCaretPosition(el, caretPos) {
|
|
92
|
+
el.value = el.value;
|
|
93
|
+
if (el !== null) {
|
|
94
|
+
if (el.createTextRange) {
|
|
95
|
+
var range = el.createTextRange();
|
|
96
|
+
range.move("character", caretPos);
|
|
97
|
+
range.select();
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (el.selectionStart || el.selectionStart === 0) {
|
|
101
|
+
el.focus();
|
|
102
|
+
el.setSelectionRange(caretPos, caretPos);
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
el.focus();
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
var findChangeRange = memoizeOnce(function(prevValue, newValue) {
|
|
110
|
+
var i = 0, j = 0;
|
|
111
|
+
var prevLength = prevValue.length;
|
|
112
|
+
var newLength = newValue.length;
|
|
113
|
+
while (prevValue[i] === newValue[i] && i < prevLength) {
|
|
114
|
+
i++;
|
|
115
|
+
}
|
|
116
|
+
while (prevValue[prevLength - 1 - j] === newValue[newLength - 1 - j] && newLength - j > i && prevLength - j > i) {
|
|
117
|
+
j++;
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
from: { start: i, end: prevLength - j },
|
|
121
|
+
to: { start: i, end: newLength - j }
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
var findChangedRangeFromCaretPositions = function(lastCaretPositions, currentCaretPosition) {
|
|
125
|
+
var startPosition = Math.min(lastCaretPositions.selectionStart, currentCaretPosition);
|
|
126
|
+
return {
|
|
127
|
+
from: { start: startPosition, end: lastCaretPositions.selectionEnd },
|
|
128
|
+
to: { start: startPosition, end: currentCaretPosition }
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
function clamp(num, min, max) {
|
|
132
|
+
return Math.min(Math.max(num, min), max);
|
|
133
|
+
}
|
|
134
|
+
function geInputCaretPosition(el) {
|
|
135
|
+
return Math.max(el.selectionStart, el.selectionEnd);
|
|
136
|
+
}
|
|
137
|
+
function addInputMode() {
|
|
138
|
+
return typeof navigator !== "undefined" && !(navigator.platform && /iPhone|iPod/.test(navigator.platform));
|
|
139
|
+
}
|
|
140
|
+
function getDefaultChangeMeta(value) {
|
|
141
|
+
return {
|
|
142
|
+
from: {
|
|
143
|
+
start: 0,
|
|
144
|
+
end: 0
|
|
145
|
+
},
|
|
146
|
+
to: {
|
|
147
|
+
start: 0,
|
|
148
|
+
end: value.length
|
|
149
|
+
},
|
|
150
|
+
lastValue: ""
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function getMaskAtIndex(mask, index) {
|
|
154
|
+
if (mask === void 0) mask = " ";
|
|
155
|
+
if (typeof mask === "string") {
|
|
156
|
+
return mask;
|
|
157
|
+
}
|
|
158
|
+
return mask[index] || " ";
|
|
159
|
+
}
|
|
160
|
+
function defaultIsCharacterSame(ref) {
|
|
161
|
+
var currentValue = ref.currentValue;
|
|
162
|
+
var formattedValue = ref.formattedValue;
|
|
163
|
+
var currentValueIndex = ref.currentValueIndex;
|
|
164
|
+
var formattedValueIndex = ref.formattedValueIndex;
|
|
165
|
+
return currentValue[currentValueIndex] === formattedValue[formattedValueIndex];
|
|
166
|
+
}
|
|
167
|
+
function getCaretPosition(newFormattedValue, lastFormattedValue, curValue, curCaretPos, boundary, isValidInputCharacter, isCharacterSame) {
|
|
168
|
+
if (isCharacterSame === void 0) isCharacterSame = defaultIsCharacterSame;
|
|
169
|
+
var firstAllowedPosition = boundary.findIndex(function(b) {
|
|
170
|
+
return b;
|
|
171
|
+
});
|
|
172
|
+
var prefixFormat = newFormattedValue.slice(0, firstAllowedPosition);
|
|
173
|
+
if (!lastFormattedValue && !curValue.startsWith(prefixFormat)) {
|
|
174
|
+
lastFormattedValue = prefixFormat;
|
|
175
|
+
curValue = prefixFormat + curValue;
|
|
176
|
+
curCaretPos = curCaretPos + prefixFormat.length;
|
|
177
|
+
}
|
|
178
|
+
var curValLn = curValue.length;
|
|
179
|
+
var formattedValueLn = newFormattedValue.length;
|
|
180
|
+
var addedIndexMap = {};
|
|
181
|
+
var indexMap = new Array(curValLn);
|
|
182
|
+
for (var i = 0; i < curValLn; i++) {
|
|
183
|
+
indexMap[i] = -1;
|
|
184
|
+
for (var j = 0, jLn = formattedValueLn; j < jLn; j++) {
|
|
185
|
+
var isCharSame = isCharacterSame({
|
|
186
|
+
currentValue: curValue,
|
|
187
|
+
lastValue: lastFormattedValue,
|
|
188
|
+
formattedValue: newFormattedValue,
|
|
189
|
+
currentValueIndex: i,
|
|
190
|
+
formattedValueIndex: j
|
|
191
|
+
});
|
|
192
|
+
if (isCharSame && addedIndexMap[j] !== true) {
|
|
193
|
+
indexMap[i] = j;
|
|
194
|
+
addedIndexMap[j] = true;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
var pos = curCaretPos;
|
|
200
|
+
while (pos < curValLn && (indexMap[pos] === -1 || !isValidInputCharacter(curValue[pos]))) {
|
|
201
|
+
pos++;
|
|
202
|
+
}
|
|
203
|
+
var endIndex = pos === curValLn || indexMap[pos] === -1 ? formattedValueLn : indexMap[pos];
|
|
204
|
+
pos = curCaretPos - 1;
|
|
205
|
+
while (pos > 0 && indexMap[pos] === -1) {
|
|
206
|
+
pos--;
|
|
207
|
+
}
|
|
208
|
+
var startIndex = pos === -1 || indexMap[pos] === -1 ? 0 : indexMap[pos] + 1;
|
|
209
|
+
if (startIndex > endIndex) {
|
|
210
|
+
return endIndex;
|
|
211
|
+
}
|
|
212
|
+
return curCaretPos - startIndex < endIndex - curCaretPos ? startIndex : endIndex;
|
|
213
|
+
}
|
|
214
|
+
function getCaretPosInBoundary(value, caretPos, boundary, direction) {
|
|
215
|
+
var valLn = value.length;
|
|
216
|
+
caretPos = clamp(caretPos, 0, valLn);
|
|
217
|
+
if (direction === "left") {
|
|
218
|
+
while (caretPos >= 0 && !boundary[caretPos]) {
|
|
219
|
+
caretPos--;
|
|
220
|
+
}
|
|
221
|
+
if (caretPos === -1) {
|
|
222
|
+
caretPos = boundary.indexOf(true);
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
while (caretPos <= valLn && !boundary[caretPos]) {
|
|
226
|
+
caretPos++;
|
|
227
|
+
}
|
|
228
|
+
if (caretPos > valLn) {
|
|
229
|
+
caretPos = boundary.lastIndexOf(true);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (caretPos === -1) {
|
|
233
|
+
caretPos = valLn;
|
|
234
|
+
}
|
|
235
|
+
return caretPos;
|
|
236
|
+
}
|
|
237
|
+
function caretUnknownFormatBoundary(formattedValue) {
|
|
238
|
+
var boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(function() {
|
|
239
|
+
return true;
|
|
240
|
+
});
|
|
241
|
+
for (var i = 0, ln = boundaryAry.length; i < ln; i++) {
|
|
242
|
+
boundaryAry[i] = Boolean(charIsNumber(formattedValue[i]) || charIsNumber(formattedValue[i - 1]));
|
|
243
|
+
}
|
|
244
|
+
return boundaryAry;
|
|
245
|
+
}
|
|
246
|
+
function useInternalValues(value, defaultValue, valueIsNumericString, format, removeFormatting, onValueChange) {
|
|
247
|
+
if (onValueChange === void 0) onValueChange = noop;
|
|
248
|
+
var getValues = usePersistentCallback(function(value2, valueIsNumericString2) {
|
|
249
|
+
var formattedValue, numAsString;
|
|
250
|
+
if (isNotValidValue(value2)) {
|
|
251
|
+
numAsString = "";
|
|
252
|
+
formattedValue = "";
|
|
253
|
+
} else if (typeof value2 === "number" || valueIsNumericString2) {
|
|
254
|
+
numAsString = typeof value2 === "number" ? toNumericString(value2) : value2;
|
|
255
|
+
formattedValue = format(numAsString);
|
|
256
|
+
} else {
|
|
257
|
+
numAsString = removeFormatting(value2, void 0);
|
|
258
|
+
formattedValue = format(numAsString);
|
|
259
|
+
}
|
|
260
|
+
return { formattedValue, numAsString };
|
|
261
|
+
});
|
|
262
|
+
var ref = useState(function() {
|
|
263
|
+
return getValues(isNil(value) ? defaultValue : value, valueIsNumericString);
|
|
264
|
+
});
|
|
265
|
+
var values = ref[0];
|
|
266
|
+
var setValues = ref[1];
|
|
267
|
+
var _onValueChange = function(newValues2, sourceInfo) {
|
|
268
|
+
if (newValues2.formattedValue !== values.formattedValue) {
|
|
269
|
+
setValues({
|
|
270
|
+
formattedValue: newValues2.formattedValue,
|
|
271
|
+
numAsString: newValues2.value
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
onValueChange(newValues2, sourceInfo);
|
|
275
|
+
};
|
|
276
|
+
var _value = value;
|
|
277
|
+
var _valueIsNumericString = valueIsNumericString;
|
|
278
|
+
if (isNil(value)) {
|
|
279
|
+
_value = values.numAsString;
|
|
280
|
+
_valueIsNumericString = true;
|
|
281
|
+
}
|
|
282
|
+
var newValues = getValues(_value, _valueIsNumericString);
|
|
283
|
+
useMemo(function() {
|
|
284
|
+
setValues(newValues);
|
|
285
|
+
}, [newValues.formattedValue]);
|
|
286
|
+
return [values, _onValueChange];
|
|
287
|
+
}
|
|
288
|
+
function defaultRemoveFormatting(value) {
|
|
289
|
+
return value.replace(/[^0-9]/g, "");
|
|
290
|
+
}
|
|
291
|
+
function defaultFormat(value) {
|
|
292
|
+
return value;
|
|
293
|
+
}
|
|
294
|
+
function NumberFormatBase(props) {
|
|
295
|
+
var type = props.type;
|
|
296
|
+
if (type === void 0) type = "text";
|
|
297
|
+
var displayType = props.displayType;
|
|
298
|
+
if (displayType === void 0) displayType = "input";
|
|
299
|
+
var customInput = props.customInput;
|
|
300
|
+
var renderText = props.renderText;
|
|
301
|
+
var getInputRef = props.getInputRef;
|
|
302
|
+
var format = props.format;
|
|
303
|
+
if (format === void 0) format = defaultFormat;
|
|
304
|
+
var removeFormatting = props.removeFormatting;
|
|
305
|
+
if (removeFormatting === void 0) removeFormatting = defaultRemoveFormatting;
|
|
306
|
+
var defaultValue = props.defaultValue;
|
|
307
|
+
var valueIsNumericString = props.valueIsNumericString;
|
|
308
|
+
var onValueChange = props.onValueChange;
|
|
309
|
+
var isAllowed = props.isAllowed;
|
|
310
|
+
var onChange = props.onChange;
|
|
311
|
+
if (onChange === void 0) onChange = noop;
|
|
312
|
+
var onKeyDown = props.onKeyDown;
|
|
313
|
+
if (onKeyDown === void 0) onKeyDown = noop;
|
|
314
|
+
var onMouseUp = props.onMouseUp;
|
|
315
|
+
if (onMouseUp === void 0) onMouseUp = noop;
|
|
316
|
+
var onFocus = props.onFocus;
|
|
317
|
+
if (onFocus === void 0) onFocus = noop;
|
|
318
|
+
var onBlur = props.onBlur;
|
|
319
|
+
if (onBlur === void 0) onBlur = noop;
|
|
320
|
+
var propValue = props.value;
|
|
321
|
+
var getCaretBoundary = props.getCaretBoundary;
|
|
322
|
+
if (getCaretBoundary === void 0) getCaretBoundary = caretUnknownFormatBoundary;
|
|
323
|
+
var isValidInputCharacter = props.isValidInputCharacter;
|
|
324
|
+
if (isValidInputCharacter === void 0) isValidInputCharacter = charIsNumber;
|
|
325
|
+
var isCharacterSame = props.isCharacterSame;
|
|
326
|
+
var otherProps = __rest(props, ["type", "displayType", "customInput", "renderText", "getInputRef", "format", "removeFormatting", "defaultValue", "valueIsNumericString", "onValueChange", "isAllowed", "onChange", "onKeyDown", "onMouseUp", "onFocus", "onBlur", "value", "getCaretBoundary", "isValidInputCharacter", "isCharacterSame"]);
|
|
327
|
+
var ref = useInternalValues(propValue, defaultValue, Boolean(valueIsNumericString), format, removeFormatting, onValueChange);
|
|
328
|
+
var ref_0 = ref[0];
|
|
329
|
+
var formattedValue = ref_0.formattedValue;
|
|
330
|
+
var numAsString = ref_0.numAsString;
|
|
331
|
+
var onFormattedValueChange = ref[1];
|
|
332
|
+
var caretPositionBeforeChange = useRef();
|
|
333
|
+
var lastUpdatedValue = useRef({ formattedValue, numAsString });
|
|
334
|
+
var _onValueChange = function(values, source) {
|
|
335
|
+
lastUpdatedValue.current = { formattedValue: values.formattedValue, numAsString: values.value };
|
|
336
|
+
onFormattedValueChange(values, source);
|
|
337
|
+
};
|
|
338
|
+
var ref$1 = useState(false);
|
|
339
|
+
var mounted = ref$1[0];
|
|
340
|
+
var setMounted = ref$1[1];
|
|
341
|
+
var focusedElm = useRef(null);
|
|
342
|
+
var timeout = useRef({
|
|
343
|
+
setCaretTimeout: null,
|
|
344
|
+
focusTimeout: null
|
|
345
|
+
});
|
|
346
|
+
useEffect(function() {
|
|
347
|
+
setMounted(true);
|
|
348
|
+
return function() {
|
|
349
|
+
clearTimeout(timeout.current.setCaretTimeout);
|
|
350
|
+
clearTimeout(timeout.current.focusTimeout);
|
|
351
|
+
};
|
|
352
|
+
}, []);
|
|
353
|
+
var _format = format;
|
|
354
|
+
var getValueObject = function(formattedValue2, numAsString2) {
|
|
355
|
+
var floatValue = parseFloat(numAsString2);
|
|
356
|
+
return {
|
|
357
|
+
formattedValue: formattedValue2,
|
|
358
|
+
value: numAsString2,
|
|
359
|
+
floatValue: isNaN(floatValue) ? void 0 : floatValue
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
var setPatchedCaretPosition = function(el, caretPos, currentValue) {
|
|
363
|
+
if (el.selectionStart === 0 && el.selectionEnd === el.value.length) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
setCaretPosition(el, caretPos);
|
|
367
|
+
timeout.current.setCaretTimeout = setTimeout(function() {
|
|
368
|
+
if (el.value === currentValue && el.selectionStart !== caretPos) {
|
|
369
|
+
setCaretPosition(el, caretPos);
|
|
370
|
+
}
|
|
371
|
+
}, 0);
|
|
372
|
+
};
|
|
373
|
+
var correctCaretPosition = function(value, caretPos, direction) {
|
|
374
|
+
return getCaretPosInBoundary(value, caretPos, getCaretBoundary(value), direction);
|
|
375
|
+
};
|
|
376
|
+
var getNewCaretPosition = function(inputValue, newFormattedValue, caretPos) {
|
|
377
|
+
var caretBoundary = getCaretBoundary(newFormattedValue);
|
|
378
|
+
var updatedCaretPos = getCaretPosition(newFormattedValue, formattedValue, inputValue, caretPos, caretBoundary, isValidInputCharacter, isCharacterSame);
|
|
379
|
+
updatedCaretPos = getCaretPosInBoundary(newFormattedValue, updatedCaretPos, caretBoundary);
|
|
380
|
+
return updatedCaretPos;
|
|
381
|
+
};
|
|
382
|
+
var updateValueAndCaretPosition = function(params) {
|
|
383
|
+
var newFormattedValue = params.formattedValue;
|
|
384
|
+
if (newFormattedValue === void 0) newFormattedValue = "";
|
|
385
|
+
var input = params.input;
|
|
386
|
+
var source = params.source;
|
|
387
|
+
var event = params.event;
|
|
388
|
+
var numAsString2 = params.numAsString;
|
|
389
|
+
var caretPos;
|
|
390
|
+
if (input) {
|
|
391
|
+
var inputValue = params.inputValue || input.value;
|
|
392
|
+
var currentCaretPosition2 = geInputCaretPosition(input);
|
|
393
|
+
input.value = newFormattedValue;
|
|
394
|
+
caretPos = getNewCaretPosition(inputValue, newFormattedValue, currentCaretPosition2);
|
|
395
|
+
if (caretPos !== void 0) {
|
|
396
|
+
setPatchedCaretPosition(input, caretPos, newFormattedValue);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
if (newFormattedValue !== formattedValue) {
|
|
400
|
+
_onValueChange(getValueObject(newFormattedValue, numAsString2), { event, source });
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
useEffect(function() {
|
|
404
|
+
var ref2 = lastUpdatedValue.current;
|
|
405
|
+
var lastFormattedValue = ref2.formattedValue;
|
|
406
|
+
var lastNumAsString = ref2.numAsString;
|
|
407
|
+
if (formattedValue !== lastFormattedValue || numAsString !== lastNumAsString) {
|
|
408
|
+
_onValueChange(getValueObject(formattedValue, numAsString), {
|
|
409
|
+
event: void 0,
|
|
410
|
+
source: SourceType.props
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
}, [formattedValue, numAsString]);
|
|
414
|
+
var currentCaretPosition = focusedElm.current ? geInputCaretPosition(focusedElm.current) : void 0;
|
|
415
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
416
|
+
useIsomorphicLayoutEffect(function() {
|
|
417
|
+
var input = focusedElm.current;
|
|
418
|
+
if (formattedValue !== lastUpdatedValue.current.formattedValue && input) {
|
|
419
|
+
var caretPos = getNewCaretPosition(lastUpdatedValue.current.formattedValue, formattedValue, currentCaretPosition);
|
|
420
|
+
input.value = formattedValue;
|
|
421
|
+
setPatchedCaretPosition(input, caretPos, formattedValue);
|
|
422
|
+
}
|
|
423
|
+
}, [formattedValue]);
|
|
424
|
+
var formatInputValue = function(inputValue, event, source) {
|
|
425
|
+
var input = event.target;
|
|
426
|
+
var changeRange = caretPositionBeforeChange.current ? findChangedRangeFromCaretPositions(caretPositionBeforeChange.current, input.selectionEnd) : findChangeRange(formattedValue, inputValue);
|
|
427
|
+
var changeMeta = Object.assign(Object.assign({}, changeRange), { lastValue: formattedValue });
|
|
428
|
+
var _numAsString = removeFormatting(inputValue, changeMeta);
|
|
429
|
+
var _formattedValue = _format(_numAsString);
|
|
430
|
+
_numAsString = removeFormatting(_formattedValue, void 0);
|
|
431
|
+
if (isAllowed && !isAllowed(getValueObject(_formattedValue, _numAsString))) {
|
|
432
|
+
var input$1 = event.target;
|
|
433
|
+
var currentCaretPosition2 = geInputCaretPosition(input$1);
|
|
434
|
+
var caretPos = getNewCaretPosition(inputValue, formattedValue, currentCaretPosition2);
|
|
435
|
+
input$1.value = formattedValue;
|
|
436
|
+
setPatchedCaretPosition(input$1, caretPos, formattedValue);
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
updateValueAndCaretPosition({
|
|
440
|
+
formattedValue: _formattedValue,
|
|
441
|
+
numAsString: _numAsString,
|
|
442
|
+
inputValue,
|
|
443
|
+
event,
|
|
444
|
+
source,
|
|
445
|
+
input: event.target
|
|
446
|
+
});
|
|
447
|
+
return true;
|
|
448
|
+
};
|
|
449
|
+
var setCaretPositionInfoBeforeChange = function(el, endOffset) {
|
|
450
|
+
if (endOffset === void 0) endOffset = 0;
|
|
451
|
+
var selectionStart = el.selectionStart;
|
|
452
|
+
var selectionEnd = el.selectionEnd;
|
|
453
|
+
caretPositionBeforeChange.current = { selectionStart, selectionEnd: selectionEnd + endOffset };
|
|
454
|
+
};
|
|
455
|
+
var _onChange = function(e) {
|
|
456
|
+
var el = e.target;
|
|
457
|
+
var inputValue = el.value;
|
|
458
|
+
var changed = formatInputValue(inputValue, e, SourceType.event);
|
|
459
|
+
if (changed) {
|
|
460
|
+
onChange(e);
|
|
461
|
+
}
|
|
462
|
+
caretPositionBeforeChange.current = void 0;
|
|
463
|
+
};
|
|
464
|
+
var _onKeyDown = function(e) {
|
|
465
|
+
var el = e.target;
|
|
466
|
+
var key = e.key;
|
|
467
|
+
var selectionStart = el.selectionStart;
|
|
468
|
+
var selectionEnd = el.selectionEnd;
|
|
469
|
+
var value = el.value;
|
|
470
|
+
if (value === void 0) value = "";
|
|
471
|
+
var expectedCaretPosition;
|
|
472
|
+
if (key === "ArrowLeft" || key === "Backspace") {
|
|
473
|
+
expectedCaretPosition = Math.max(selectionStart - 1, 0);
|
|
474
|
+
} else if (key === "ArrowRight") {
|
|
475
|
+
expectedCaretPosition = Math.min(selectionStart + 1, value.length);
|
|
476
|
+
} else if (key === "Delete") {
|
|
477
|
+
expectedCaretPosition = selectionStart;
|
|
478
|
+
}
|
|
479
|
+
var endOffset = 0;
|
|
480
|
+
if (key === "Delete" && selectionStart === selectionEnd) {
|
|
481
|
+
endOffset = 1;
|
|
482
|
+
}
|
|
483
|
+
var isArrowKey = key === "ArrowLeft" || key === "ArrowRight";
|
|
484
|
+
if (expectedCaretPosition === void 0 || selectionStart !== selectionEnd && !isArrowKey) {
|
|
485
|
+
onKeyDown(e);
|
|
486
|
+
setCaretPositionInfoBeforeChange(el, endOffset);
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
var newCaretPosition = expectedCaretPosition;
|
|
490
|
+
if (isArrowKey) {
|
|
491
|
+
var direction = key === "ArrowLeft" ? "left" : "right";
|
|
492
|
+
newCaretPosition = correctCaretPosition(value, expectedCaretPosition, direction);
|
|
493
|
+
if (newCaretPosition !== expectedCaretPosition) {
|
|
494
|
+
e.preventDefault();
|
|
495
|
+
}
|
|
496
|
+
} else if (key === "Delete" && !isValidInputCharacter(value[expectedCaretPosition])) {
|
|
497
|
+
newCaretPosition = correctCaretPosition(value, expectedCaretPosition, "right");
|
|
498
|
+
} else if (key === "Backspace" && !isValidInputCharacter(value[expectedCaretPosition])) {
|
|
499
|
+
newCaretPosition = correctCaretPosition(value, expectedCaretPosition, "left");
|
|
500
|
+
}
|
|
501
|
+
if (newCaretPosition !== expectedCaretPosition) {
|
|
502
|
+
setPatchedCaretPosition(el, newCaretPosition, value);
|
|
503
|
+
}
|
|
504
|
+
onKeyDown(e);
|
|
505
|
+
setCaretPositionInfoBeforeChange(el, endOffset);
|
|
506
|
+
};
|
|
507
|
+
var _onMouseUp = function(e) {
|
|
508
|
+
var el = e.target;
|
|
509
|
+
var correctCaretPositionIfRequired = function() {
|
|
510
|
+
var selectionStart = el.selectionStart;
|
|
511
|
+
var selectionEnd = el.selectionEnd;
|
|
512
|
+
var value = el.value;
|
|
513
|
+
if (value === void 0) value = "";
|
|
514
|
+
if (selectionStart === selectionEnd) {
|
|
515
|
+
var caretPosition = correctCaretPosition(value, selectionStart);
|
|
516
|
+
if (caretPosition !== selectionStart) {
|
|
517
|
+
setPatchedCaretPosition(el, caretPosition, value);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
correctCaretPositionIfRequired();
|
|
522
|
+
requestAnimationFrame(function() {
|
|
523
|
+
correctCaretPositionIfRequired();
|
|
524
|
+
});
|
|
525
|
+
onMouseUp(e);
|
|
526
|
+
setCaretPositionInfoBeforeChange(el);
|
|
527
|
+
};
|
|
528
|
+
var _onFocus = function(e) {
|
|
529
|
+
if (e.persist) {
|
|
530
|
+
e.persist();
|
|
531
|
+
}
|
|
532
|
+
var el = e.target;
|
|
533
|
+
var currentTarget = e.currentTarget;
|
|
534
|
+
focusedElm.current = el;
|
|
535
|
+
timeout.current.focusTimeout = setTimeout(function() {
|
|
536
|
+
var selectionStart = el.selectionStart;
|
|
537
|
+
var selectionEnd = el.selectionEnd;
|
|
538
|
+
var value = el.value;
|
|
539
|
+
if (value === void 0) value = "";
|
|
540
|
+
var caretPosition = correctCaretPosition(value, selectionStart);
|
|
541
|
+
if (caretPosition !== selectionStart && !(selectionStart === 0 && selectionEnd === value.length)) {
|
|
542
|
+
setPatchedCaretPosition(el, caretPosition, value);
|
|
543
|
+
}
|
|
544
|
+
onFocus(Object.assign(Object.assign({}, e), { currentTarget }));
|
|
545
|
+
}, 0);
|
|
546
|
+
};
|
|
547
|
+
var _onBlur = function(e) {
|
|
548
|
+
focusedElm.current = null;
|
|
549
|
+
clearTimeout(timeout.current.focusTimeout);
|
|
550
|
+
clearTimeout(timeout.current.setCaretTimeout);
|
|
551
|
+
onBlur(e);
|
|
552
|
+
};
|
|
553
|
+
var inputMode = mounted && addInputMode() ? "numeric" : void 0;
|
|
554
|
+
var inputProps = Object.assign({ inputMode }, otherProps, {
|
|
555
|
+
type,
|
|
556
|
+
value: formattedValue,
|
|
557
|
+
onChange: _onChange,
|
|
558
|
+
onKeyDown: _onKeyDown,
|
|
559
|
+
onMouseUp: _onMouseUp,
|
|
560
|
+
onFocus: _onFocus,
|
|
561
|
+
onBlur: _onBlur
|
|
562
|
+
});
|
|
563
|
+
if (displayType === "text") {
|
|
564
|
+
return renderText ? React.createElement(React.Fragment, null, renderText(formattedValue, otherProps) || null) : React.createElement("span", Object.assign({}, otherProps, { ref: getInputRef }), formattedValue);
|
|
565
|
+
} else if (customInput) {
|
|
566
|
+
var CustomInput = customInput;
|
|
567
|
+
return React.createElement(CustomInput, Object.assign({}, inputProps, { ref: getInputRef }));
|
|
568
|
+
}
|
|
569
|
+
return React.createElement("input", Object.assign({}, inputProps, { ref: getInputRef }));
|
|
570
|
+
}
|
|
571
|
+
function format$1(numStr, props) {
|
|
572
|
+
var format = props.format;
|
|
573
|
+
var allowEmptyFormatting = props.allowEmptyFormatting;
|
|
574
|
+
var mask = props.mask;
|
|
575
|
+
var patternChar = props.patternChar;
|
|
576
|
+
if (patternChar === void 0) patternChar = "#";
|
|
577
|
+
if (numStr === "" && !allowEmptyFormatting) {
|
|
578
|
+
return "";
|
|
579
|
+
}
|
|
580
|
+
var hashCount = 0;
|
|
581
|
+
var formattedNumberAry = format.split("");
|
|
582
|
+
for (var i = 0, ln = format.length; i < ln; i++) {
|
|
583
|
+
if (format[i] === patternChar) {
|
|
584
|
+
formattedNumberAry[i] = numStr[hashCount] || getMaskAtIndex(mask, hashCount);
|
|
585
|
+
hashCount += 1;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
return formattedNumberAry.join("");
|
|
589
|
+
}
|
|
590
|
+
function removeFormatting$1(value, changeMeta, props) {
|
|
591
|
+
if (changeMeta === void 0) changeMeta = getDefaultChangeMeta(value);
|
|
592
|
+
var format = props.format;
|
|
593
|
+
var patternChar = props.patternChar;
|
|
594
|
+
if (patternChar === void 0) patternChar = "#";
|
|
595
|
+
var from = changeMeta.from;
|
|
596
|
+
var to = changeMeta.to;
|
|
597
|
+
var lastValue = changeMeta.lastValue;
|
|
598
|
+
if (lastValue === void 0) lastValue = "";
|
|
599
|
+
var isNumericSlot = function(caretPos) {
|
|
600
|
+
return format[caretPos] === patternChar;
|
|
601
|
+
};
|
|
602
|
+
var removeFormatChar = function(string, startIndex) {
|
|
603
|
+
var str2 = "";
|
|
604
|
+
for (var i2 = 0; i2 < string.length; i2++) {
|
|
605
|
+
if (isNumericSlot(startIndex + i2) && charIsNumber(string[i2])) {
|
|
606
|
+
str2 += string[i2];
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return str2;
|
|
610
|
+
};
|
|
611
|
+
var extractNumbers = function(str2) {
|
|
612
|
+
return str2.replace(/[^0-9]/g, "");
|
|
613
|
+
};
|
|
614
|
+
if (!format.match(/\d/)) {
|
|
615
|
+
return extractNumbers(value);
|
|
616
|
+
}
|
|
617
|
+
if ((lastValue === "" || from.end - from.start === lastValue.length) && value.length === format.length) {
|
|
618
|
+
var str = "";
|
|
619
|
+
for (var i = 0; i < value.length; i++) {
|
|
620
|
+
if (isNumericSlot(i)) {
|
|
621
|
+
if (charIsNumber(value[i])) {
|
|
622
|
+
str += value[i];
|
|
623
|
+
}
|
|
624
|
+
} else if (value[i] !== format[i]) {
|
|
625
|
+
return extractNumbers(value);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
return str;
|
|
629
|
+
}
|
|
630
|
+
var firstSection = lastValue.substring(0, from.start);
|
|
631
|
+
var middleSection = value.substring(to.start, to.end);
|
|
632
|
+
var lastSection = lastValue.substring(from.end);
|
|
633
|
+
return "" + removeFormatChar(firstSection, 0) + extractNumbers(middleSection) + removeFormatChar(lastSection, from.end);
|
|
634
|
+
}
|
|
635
|
+
function getCaretBoundary$1(formattedValue, props) {
|
|
636
|
+
var format = props.format;
|
|
637
|
+
var mask = props.mask;
|
|
638
|
+
var patternChar = props.patternChar;
|
|
639
|
+
if (patternChar === void 0) patternChar = "#";
|
|
640
|
+
var boundaryAry = Array.from({ length: formattedValue.length + 1 }).map(function() {
|
|
641
|
+
return true;
|
|
642
|
+
});
|
|
643
|
+
var hashCount = 0;
|
|
644
|
+
var firstEmptySlot = -1;
|
|
645
|
+
var maskAndIndexMap = {};
|
|
646
|
+
format.split("").forEach(function(char, index) {
|
|
647
|
+
var maskAtIndex = void 0;
|
|
648
|
+
if (char === patternChar) {
|
|
649
|
+
hashCount++;
|
|
650
|
+
maskAtIndex = getMaskAtIndex(mask, hashCount - 1);
|
|
651
|
+
if (firstEmptySlot === -1 && formattedValue[index] === maskAtIndex) {
|
|
652
|
+
firstEmptySlot = index;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
maskAndIndexMap[index] = maskAtIndex;
|
|
656
|
+
});
|
|
657
|
+
var isPosAllowed = function(pos) {
|
|
658
|
+
return format[pos] === patternChar && formattedValue[pos] !== maskAndIndexMap[pos];
|
|
659
|
+
};
|
|
660
|
+
for (var i = 0, ln = boundaryAry.length; i < ln; i++) {
|
|
661
|
+
boundaryAry[i] = i === firstEmptySlot || isPosAllowed(i) || isPosAllowed(i - 1);
|
|
662
|
+
}
|
|
663
|
+
boundaryAry[format.indexOf(patternChar)] = true;
|
|
664
|
+
return boundaryAry;
|
|
665
|
+
}
|
|
666
|
+
function validateProps(props) {
|
|
667
|
+
var mask = props.mask;
|
|
668
|
+
if (mask) {
|
|
669
|
+
var maskAsStr = mask === "string" ? mask : mask.toString();
|
|
670
|
+
if (maskAsStr.match(/\d/g)) {
|
|
671
|
+
throw new Error("Mask " + mask + " should not contain numeric character;");
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
function isNumericString$1(val, format) {
|
|
676
|
+
if (val === "") {
|
|
677
|
+
return true;
|
|
678
|
+
}
|
|
679
|
+
return !(format === null || format === void 0 ? void 0 : format.match(/\d/)) && typeof val === "string" && (!!val.match(/^\d+$/) || val === "");
|
|
680
|
+
}
|
|
681
|
+
function usePatternFormat(props) {
|
|
682
|
+
props.mask;
|
|
683
|
+
props.allowEmptyFormatting;
|
|
684
|
+
var formatProp = props.format;
|
|
685
|
+
var inputMode = props.inputMode;
|
|
686
|
+
if (inputMode === void 0) inputMode = "numeric";
|
|
687
|
+
var onKeyDown = props.onKeyDown;
|
|
688
|
+
if (onKeyDown === void 0) onKeyDown = noop;
|
|
689
|
+
var patternChar = props.patternChar;
|
|
690
|
+
if (patternChar === void 0) patternChar = "#";
|
|
691
|
+
var value = props.value;
|
|
692
|
+
var defaultValue = props.defaultValue;
|
|
693
|
+
var valueIsNumericString = props.valueIsNumericString;
|
|
694
|
+
var restProps = __rest(props, ["mask", "allowEmptyFormatting", "format", "inputMode", "onKeyDown", "patternChar", "value", "defaultValue", "valueIsNumericString"]);
|
|
695
|
+
validateProps(props);
|
|
696
|
+
var _getCaretBoundary = function(formattedValue) {
|
|
697
|
+
return getCaretBoundary$1(formattedValue, props);
|
|
698
|
+
};
|
|
699
|
+
var _onKeyDown = function(e) {
|
|
700
|
+
var key = e.key;
|
|
701
|
+
var el = e.target;
|
|
702
|
+
var selectionStart = el.selectionStart;
|
|
703
|
+
var selectionEnd = el.selectionEnd;
|
|
704
|
+
var value2 = el.value;
|
|
705
|
+
if (selectionStart !== selectionEnd) {
|
|
706
|
+
onKeyDown(e);
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
var caretPos = selectionStart;
|
|
710
|
+
if (key === "Backspace" || key === "Delete") {
|
|
711
|
+
var direction = "right";
|
|
712
|
+
if (key === "Backspace") {
|
|
713
|
+
while (caretPos > 0 && formatProp[caretPos - 1] !== patternChar) {
|
|
714
|
+
caretPos--;
|
|
715
|
+
}
|
|
716
|
+
direction = "left";
|
|
717
|
+
} else {
|
|
718
|
+
var formatLn = formatProp.length;
|
|
719
|
+
while (caretPos < formatLn && formatProp[caretPos] !== patternChar) {
|
|
720
|
+
caretPos++;
|
|
721
|
+
}
|
|
722
|
+
direction = "right";
|
|
723
|
+
}
|
|
724
|
+
caretPos = getCaretPosInBoundary(value2, caretPos, _getCaretBoundary(value2), direction);
|
|
725
|
+
} else if (formatProp[caretPos] !== patternChar && key !== "ArrowLeft" && key !== "ArrowRight") {
|
|
726
|
+
caretPos = getCaretPosInBoundary(value2, caretPos + 1, _getCaretBoundary(value2), "right");
|
|
727
|
+
}
|
|
728
|
+
if (caretPos !== selectionStart) {
|
|
729
|
+
setCaretPosition(el, caretPos);
|
|
730
|
+
}
|
|
731
|
+
onKeyDown(e);
|
|
732
|
+
};
|
|
733
|
+
var _value = isNil(value) ? defaultValue : value;
|
|
734
|
+
var isValueNumericString = valueIsNumericString !== null && valueIsNumericString !== void 0 ? valueIsNumericString : isNumericString$1(_value, formatProp);
|
|
735
|
+
var _props = Object.assign(Object.assign({}, props), { valueIsNumericString: isValueNumericString });
|
|
736
|
+
return Object.assign(Object.assign({}, restProps), {
|
|
737
|
+
value,
|
|
738
|
+
defaultValue,
|
|
739
|
+
valueIsNumericString: isValueNumericString,
|
|
740
|
+
inputMode,
|
|
741
|
+
format: function(numStr) {
|
|
742
|
+
return format$1(numStr, _props);
|
|
743
|
+
},
|
|
744
|
+
removeFormatting: function(inputValue, changeMeta) {
|
|
745
|
+
return removeFormatting$1(inputValue, changeMeta, _props);
|
|
746
|
+
},
|
|
747
|
+
getCaretBoundary: _getCaretBoundary,
|
|
748
|
+
onKeyDown: _onKeyDown
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
function PatternFormat(props) {
|
|
752
|
+
var patternFormatProps = usePatternFormat(props);
|
|
753
|
+
return React.createElement(NumberFormatBase, Object.assign({}, patternFormatProps));
|
|
754
|
+
}
|
|
755
|
+
export {
|
|
756
|
+
NumberFormatBase as N,
|
|
757
|
+
PatternFormat as P,
|
|
758
|
+
usePatternFormat as u
|
|
759
|
+
};
|
|
760
|
+
//# sourceMappingURL=react-number-format.es-DMLgWFZX.js.map
|