infinity-forge 0.36.2 → 0.36.4
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/dist/ui/components/form/input-mask/index.js +14 -12
- package/dist/ui/components/form/input-mask/index.js.map +1 -1
- package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.d.ts +14 -0
- package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.js +34 -0
- package/dist/ui/components/form/input-mask/lib/core/errors/SyntheticChangeError.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.d.ts +7 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.js +21 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useConnectedInputRef.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.d.ts +16 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.js +255 -0
- package/dist/ui/components/form/input-mask/lib/core/hooks/useInput.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/core/index.d.ts +5 -0
- package/dist/ui/components/form/input-mask/lib/core/index.js +15 -0
- package/dist/ui/components/form/input-mask/lib/core/index.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/core/types.d.ts +48 -0
- package/dist/ui/components/form/input-mask/lib/core/types.js +3 -0
- package/dist/ui/components/form/input-mask/lib/core/types.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.d.ts +2 -0
- package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.js +15 -0
- package/dist/ui/components/form/input-mask/lib/core/utils/setInputAttributes.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/InputMask.d.ts +6 -0
- package/dist/ui/components/form/input-mask/lib/mask/InputMask.js +44 -0
- package/dist/ui/components/form/input-mask/lib/mask/InputMask.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/index.d.ts +5 -0
- package/dist/ui/components/form/input-mask/lib/mask/index.js +26 -0
- package/dist/ui/components/form/input-mask/lib/mask/index.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/types.d.ts +61 -0
- package/dist/ui/components/form/input-mask/lib/mask/types.js +3 -0
- package/dist/ui/components/form/input-mask/lib/mask/types.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/useMask.d.ts +3 -0
- package/dist/ui/components/form/input-mask/lib/mask/useMask.js +182 -0
- package/dist/ui/components/form/input-mask/lib/mask/useMask.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/filter.d.ts +14 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/filter.js +26 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/filter.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/format.d.ts +14 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/format.js +29 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/format.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.d.ts +17 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.js +30 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToParts.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.d.ts +2 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.js +8 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/formatToReplacementObject.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.d.ts +14 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.js +25 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveDetail.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.d.ts +18 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.js +47 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/resolveSelection.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.d.ts +16 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.js +26 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/unformat.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/validate.d.ts +13 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/validate.js +41 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils/validate.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils.d.ts +63 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils.js +114 -0
- package/dist/ui/components/form/input-mask/lib/mask/utils.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.d.ts +6 -0
- package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.js +58 -0
- package/dist/ui/components/form/input-mask/lib/number-format/InputNumberFormat.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/index.d.ts +4 -0
- package/dist/ui/components/form/input-mask/lib/number-format/index.js +11 -0
- package/dist/ui/components/form/input-mask/lib/number-format/index.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/types.d.ts +26 -0
- package/dist/ui/components/form/input-mask/lib/number-format/types.js +3 -0
- package/dist/ui/components/form/input-mask/lib/number-format/types.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.d.ts +3 -0
- package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.js +208 -0
- package/dist/ui/components/form/input-mask/lib/number-format/useNumberFormat.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.d.ts +7 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.js +32 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/localizeValues.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.d.ts +20 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.js +123 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.d.ts +11 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.js +28 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.d.ts +5 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.js +53 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.js.map +1 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.d.ts +24 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.js +161 -0
- package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.js.map +1 -0
- package/package.json +86 -86
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Возвращает применяемые значения по заданной локали
|
|
5
|
+
* @param locales
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
function localizeValues(locales) {
|
|
9
|
+
var value = Intl.NumberFormat(locales, {
|
|
10
|
+
useGrouping: false,
|
|
11
|
+
signDisplay: 'always',
|
|
12
|
+
minimumIntegerDigits: 10,
|
|
13
|
+
minimumFractionDigits: 1,
|
|
14
|
+
maximumFractionDigits: 1,
|
|
15
|
+
// minimumSignificantDigits: 10,
|
|
16
|
+
// maximumSignificantDigits: 10,
|
|
17
|
+
}).format(-1234567890.1);
|
|
18
|
+
// При, например, арабской локали, минус устанавливается
|
|
19
|
+
// справа от чисел, поэтому нам важно определить положение
|
|
20
|
+
// минуса. Если минус расположен справа, то на первой
|
|
21
|
+
// позиции будет юникод `U+061C` (char code 1564)
|
|
22
|
+
var signBackwards = value.startsWith('') || value.startsWith('');
|
|
23
|
+
var minusSign = signBackwards ? value[1] : value[0];
|
|
24
|
+
var decimal = value[value.length - 2];
|
|
25
|
+
// Получаем все цифры в заданной локали (возможны варианты
|
|
26
|
+
// с китайской десятичной системой или арабскими цифрами)
|
|
27
|
+
var digits = value.slice(signBackwards ? 2 : 1, -2);
|
|
28
|
+
digits = digits[9] + digits.slice(0, -1);
|
|
29
|
+
return { signBackwards: signBackwards, minusSign: minusSign, decimal: decimal, digits: digits };
|
|
30
|
+
}
|
|
31
|
+
exports.default = localizeValues;
|
|
32
|
+
//# sourceMappingURL=localizeValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localizeValues.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/number-format/utils/localizeValues.ts"],"names":[],"mappings":";;AAEA;;;;GAIG;AACH,SAAwB,cAAc,CAAC,OAAsC;IAC3E,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACvC,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,QAAQ;QACrB,oBAAoB,EAAE,EAAE;QACxB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;QACxB,gCAAgC;QAChC,gCAAgC;KACjC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAEzB,wDAAwD;IACxD,0DAA0D;IAC1D,qDAAqD;IACrD,iDAAiD;IACjD,IAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrE,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExC,0DAA0D;IAC1D,yDAAyD;IACzD,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO,EAAE,aAAa,eAAA,EAAE,SAAS,WAAA,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AACvD,CAAC;AAzBD,iCAyBC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LocalizedNumberFormatValues, NumberFormatOptions, ResolvedNumberFormatOptions } from '../types.js';
|
|
2
|
+
import type { InputType } from '../../core/index.js';
|
|
3
|
+
interface Options {
|
|
4
|
+
inputType: InputType;
|
|
5
|
+
locales: string | string[] | undefined;
|
|
6
|
+
localizedValues: LocalizedNumberFormatValues;
|
|
7
|
+
currentOptions: NumberFormatOptions | undefined;
|
|
8
|
+
resolvedOptions: ResolvedNumberFormatOptions;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param value
|
|
13
|
+
* @param options
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export default function resolveDetail(value: string, { inputType, locales, localizedValues, currentOptions, resolvedOptions }: Options): {
|
|
17
|
+
value: string;
|
|
18
|
+
number: number;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
var resolveMinimumFractionDigits_1 = __importDefault(require("./resolveMinimumFractionDigits.js"));
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param value
|
|
32
|
+
* @param options
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
function resolveDetail(value, _a) {
|
|
36
|
+
var inputType = _a.inputType, locales = _a.locales, localizedValues = _a.localizedValues, currentOptions = _a.currentOptions, resolvedOptions = _a.resolvedOptions;
|
|
37
|
+
if ((inputType === 'deleteBackward' || inputType === 'deleteForward') &&
|
|
38
|
+
(value === '' || value === '-' || /^-?\.?0*$/.test(value))) {
|
|
39
|
+
return { value: '', number: 0 };
|
|
40
|
+
}
|
|
41
|
+
var isNegative = value.startsWith('-');
|
|
42
|
+
var absValue = isNegative ? value.slice(1) : value;
|
|
43
|
+
// При `fraction` равном `undefined` - разделитель не был введён
|
|
44
|
+
var _b = absValue.split('.'), integer = _b[0], _c = _b[1], fraction = _c === void 0 ? undefined : _c;
|
|
45
|
+
// Определяем настройки для применения в `Intl.NumberFormat`
|
|
46
|
+
var currentMinimumFractionDigits = resolvedOptions.minimumFractionDigits;
|
|
47
|
+
var currentMaximumFractionDigits = resolvedOptions.maximumFractionDigits;
|
|
48
|
+
// let currentMinimumSignificantDigits = resolvedOptions.minimumSignificantDigits;
|
|
49
|
+
// Поскольку состояние ввода хранит последний введенный символ,
|
|
50
|
+
// при форматировании может произойти округление, поэтому нам важно
|
|
51
|
+
// заранее обрезать символ не соответствующий максимальному количеству символов
|
|
52
|
+
// - `replace` - Учитываем `minimumSignificantDigits` и `minimumIntegerDigits`.
|
|
53
|
+
// Так, при `addedValue` "2": "000 001" -> "000 0012" -> "12" -> "000 012"
|
|
54
|
+
integer = integer.replace(/^0+/g, '').slice(0, resolvedOptions.maximumIntegerDigits);
|
|
55
|
+
// if (fraction !== undefined && resolvedOptions.maximumSignificantDigits !== undefined) {
|
|
56
|
+
// currentMaximumFractionDigits = resolvedOptions.maximumSignificantDigits - integer.length;
|
|
57
|
+
// if (/^0*$/.test(integer) && /^0*$/.test(fraction)) {
|
|
58
|
+
// currentMaximumFractionDigits -= 1;
|
|
59
|
+
// } else if (/^0*$/.test(integer) && /^0*[1-9]+/.test(fraction)) {
|
|
60
|
+
// currentMaximumFractionDigits += fraction.match(/^0+/g)?.[0].length ?? 0;
|
|
61
|
+
// }
|
|
62
|
+
// }
|
|
63
|
+
fraction = fraction === null || fraction === void 0 ? void 0 : fraction.slice(0, currentMaximumFractionDigits);
|
|
64
|
+
var number = Number((isNegative ? '-' : '') + (integer || '0') + (fraction ? ".".concat(fraction) : ''));
|
|
65
|
+
// Чтобы иметь возможность прописывать "0" и сохранять его с каждой итерацией,
|
|
66
|
+
// переопределяем `minimumFractionDigits` и `minimumSignificantDigits`
|
|
67
|
+
currentMinimumFractionDigits = (0, resolveMinimumFractionDigits_1.default)({
|
|
68
|
+
// integer,
|
|
69
|
+
// fraction: fraction ?? '',
|
|
70
|
+
resolvedOptions: resolvedOptions,
|
|
71
|
+
});
|
|
72
|
+
// Если `currentMinimumFractionDigits` равен нулю, дробная часть будет округлена
|
|
73
|
+
if (inputType === 'insert' &&
|
|
74
|
+
fraction === '' &&
|
|
75
|
+
currentMinimumFractionDigits === 0 &&
|
|
76
|
+
currentMaximumFractionDigits > 0) {
|
|
77
|
+
currentMinimumFractionDigits = 1;
|
|
78
|
+
// if (currentMinimumSignificantDigits !== undefined) {
|
|
79
|
+
// currentMinimumSignificantDigits = (integer.length || 1) + 1;
|
|
80
|
+
// }
|
|
81
|
+
}
|
|
82
|
+
if (fraction !== undefined && fraction.length > currentMinimumFractionDigits) {
|
|
83
|
+
currentMinimumFractionDigits = fraction.length;
|
|
84
|
+
// `minimumFractionDigits` игнорируется при указанном `minimumSignificantDigits` или
|
|
85
|
+
// `maximumSignificantDigits`, поэтому указываем правило для `minimumSignificantDigits`
|
|
86
|
+
// if (currentMinimumSignificantDigits !== undefined) {
|
|
87
|
+
// if (/^0*$/.test(integer) && /^0*$/.test(fraction)) {
|
|
88
|
+
// currentMinimumSignificantDigits = fraction.length + 1;
|
|
89
|
+
// } else if (/^0*$/.test(integer) && /^0*[1-9]+/.test(fraction)) {
|
|
90
|
+
// currentMinimumSignificantDigits = fraction.replace(/^0+/g, '').length;
|
|
91
|
+
// } else if (/^0*[1-9]+/.test(integer)) {
|
|
92
|
+
// currentMinimumSignificantDigits = integer.length + fraction.length;
|
|
93
|
+
// }
|
|
94
|
+
// }
|
|
95
|
+
}
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
97
|
+
var _d = currentOptions !== null && currentOptions !== void 0 ? currentOptions : {}, format = _d.format, groupDisplay = _d.groupDisplay, maximumIntegerDigits = _d.maximumIntegerDigits, options = __rest(_d, ["format", "groupDisplay", "maximumIntegerDigits"]);
|
|
98
|
+
var nextValue = Intl.NumberFormat(locales, __assign(__assign({}, options), { style: format, useGrouping: groupDisplay, minimumFractionDigits: currentMinimumFractionDigits })).format(number);
|
|
99
|
+
// В значении может встречаться юникод, нам важно заменить
|
|
100
|
+
// такие символы для соответствия стандартному значению
|
|
101
|
+
nextValue = nextValue.replace(/\s/g, ' ');
|
|
102
|
+
var sign = nextValue.includes('+')
|
|
103
|
+
? '+'
|
|
104
|
+
: nextValue.includes(localizedValues.minusSign)
|
|
105
|
+
? localizedValues.minusSign
|
|
106
|
+
: undefined;
|
|
107
|
+
// Арабская локаль содержит юникод, что приводит к неожидаемому
|
|
108
|
+
// сдвигу курсора при смещении через клавиатуру, для предотвращения
|
|
109
|
+
// устанавливаем знак в конец числа с удалением нежелательного юникода
|
|
110
|
+
if (sign !== undefined && localizedValues.signBackwards) {
|
|
111
|
+
nextValue = nextValue.replace(RegExp("[\u200E\u061C\\".concat(sign, "]"), 'g'), '');
|
|
112
|
+
var lastDigitIndex = nextValue.search(RegExp("[".concat(localizedValues.digits, "](?!.*[").concat(localizedValues.digits, "])")));
|
|
113
|
+
if (lastDigitIndex !== -1) {
|
|
114
|
+
nextValue = nextValue.slice(0, lastDigitIndex + 1) + sign + nextValue.slice(lastDigitIndex + 1);
|
|
115
|
+
if (!nextValue.startsWith('')) {
|
|
116
|
+
nextValue = "\u200F".concat(nextValue);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { value: nextValue, number: number };
|
|
121
|
+
}
|
|
122
|
+
exports.default = resolveDetail;
|
|
123
|
+
//# sourceMappingURL=resolveDetail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDetail.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/number-format/utils/resolveDetail.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ResolvedNumberFormatOptions } from '../types.js';
|
|
2
|
+
interface ResolveMinimumFractionDigitsParam {
|
|
3
|
+
resolvedOptions: ResolvedNumberFormatOptions;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Высчитываем фактический `minimumFractionDigits`
|
|
7
|
+
* @param param
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export default function resolveMinimumFractionDigits({ resolvedOptions, }: ResolveMinimumFractionDigitsParam): number;
|
|
11
|
+
export {};
|
package/dist/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Высчитываем фактический `minimumFractionDigits`
|
|
5
|
+
* @param param
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
function resolveMinimumFractionDigits(_a) {
|
|
9
|
+
var
|
|
10
|
+
// integer,
|
|
11
|
+
// fraction,
|
|
12
|
+
resolvedOptions = _a.resolvedOptions;
|
|
13
|
+
var _b = resolvedOptions.minimumFractionDigits, minimumFractionDigits = _b === void 0 ? 0 : _b;
|
|
14
|
+
// if (resolvedOptions.minimumSignificantDigits !== undefined) {
|
|
15
|
+
// minimumFractionDigits =
|
|
16
|
+
// resolvedOptions.minimumSignificantDigits - integer.replace(/^0+/g, '').length;
|
|
17
|
+
// if (/^0*$/.test(integer)) {
|
|
18
|
+
// if (/^0*$/.test(fraction)) {
|
|
19
|
+
// minimumFractionDigits -= 1;
|
|
20
|
+
// } else if (/^0*[1-9]+/.test(fraction)) {
|
|
21
|
+
// minimumFractionDigits += fraction.match(/^0+/g)?.[0].length ?? 0;
|
|
22
|
+
// }
|
|
23
|
+
// }
|
|
24
|
+
// }
|
|
25
|
+
return minimumFractionDigits < 0 ? 0 : minimumFractionDigits;
|
|
26
|
+
}
|
|
27
|
+
exports.default = resolveMinimumFractionDigits;
|
|
28
|
+
//# sourceMappingURL=resolveMinimumFractionDigits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveMinimumFractionDigits.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/number-format/utils/resolveMinimumFractionDigits.ts"],"names":[],"mappings":";;AAQA;;;;GAIG;AACH,SAAwB,4BAA4B,CAAC,EAIjB;;IAHlC,WAAW;IACX,YAAY;IACZ,eAAe,qBAAA;IAEP,IAAA,KAA8B,eAAe,sBAApB,EAAzB,qBAAqB,mBAAG,CAAC,KAAA,CAAqB;IAEtD,gEAAgE;IAChE,4BAA4B;IAC5B,qFAAqF;IAErF,gCAAgC;IAChC,mCAAmC;IACnC,oCAAoC;IACpC,+CAA+C;IAC/C,0EAA0E;IAC1E,QAAQ;IACR,MAAM;IACN,IAAI;IAEJ,OAAO,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC/D,CAAC;AArBD,+CAqBC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NumberFormatOptions, ResolvedNumberFormatOptions } from '../types.js';
|
|
2
|
+
export default function resolveOptions(locales: string | string[] | undefined, options?: NumberFormatOptions | undefined): {
|
|
3
|
+
current: NumberFormatOptions;
|
|
4
|
+
resolved: ResolvedNumberFormatOptions;
|
|
5
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
function resolveOptions(locales, options) {
|
|
26
|
+
if (options === void 0) { options = {}; }
|
|
27
|
+
var format = options.format, groupDisplay = options.groupDisplay, _a = options.maximumIntegerDigits, maximumIntegerDigits = _a === void 0 ? 21 : _a, current = __rest(options, ["format", "groupDisplay", "maximumIntegerDigits"]);
|
|
28
|
+
var resolved = Intl.NumberFormat(locales, __assign(__assign({}, current), { style: format, useGrouping: groupDisplay })).resolvedOptions();
|
|
29
|
+
resolved.format = resolved.style;
|
|
30
|
+
resolved.groupDisplay = resolved.useGrouping;
|
|
31
|
+
resolved.maximumIntegerDigits = maximumIntegerDigits;
|
|
32
|
+
if (resolved.maximumIntegerDigits < resolved.minimumIntegerDigits) {
|
|
33
|
+
resolved.maximumIntegerDigits = resolved.minimumIntegerDigits;
|
|
34
|
+
}
|
|
35
|
+
// Удаляем из `resolved` неиспользуемые свойства
|
|
36
|
+
var tempResolved = resolved;
|
|
37
|
+
delete tempResolved.style;
|
|
38
|
+
delete tempResolved.currencySign;
|
|
39
|
+
delete tempResolved.useGrouping;
|
|
40
|
+
delete tempResolved.minimumSignificantDigits;
|
|
41
|
+
delete tempResolved.maximumSignificantDigits;
|
|
42
|
+
delete tempResolved.compactDisplay;
|
|
43
|
+
delete tempResolved.notation;
|
|
44
|
+
delete tempResolved.numberingSystem;
|
|
45
|
+
delete tempResolved.localeMatcher;
|
|
46
|
+
delete tempResolved.roundingIncrement;
|
|
47
|
+
delete tempResolved.roundingMode;
|
|
48
|
+
delete tempResolved.roundingPriority;
|
|
49
|
+
delete tempResolved.trailingZeroDisplay;
|
|
50
|
+
return { current: options, resolved: resolved };
|
|
51
|
+
}
|
|
52
|
+
exports.default = resolveOptions;
|
|
53
|
+
//# sourceMappingURL=resolveOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveOptions.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/number-format/utils/resolveOptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA,SAAwB,cAAc,CACpC,OAAsC,EACtC,OAA6C;IAA7C,wBAAA,EAAA,YAA6C;IAErC,IAAA,MAAM,GAA0D,OAAO,OAAjE,EAAE,YAAY,GAA4C,OAAO,aAAnD,EAAE,KAA0C,OAAO,qBAAxB,EAAzB,oBAAoB,mBAAG,EAAE,KAAA,EAAK,OAAO,UAAK,OAAO,EAAzE,kDAA+D,CAAF,CAAa;IAEhF,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,wBACrC,OAAO,KACV,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,YAAY,IACzB,CAAC,eAAe,EAA4C,CAAC;IAE/D,QAAQ,CAAC,MAAM,GAAI,QAAwD,CAAC,KAAK,CAAC;IAClF,QAAQ,CAAC,YAAY,GAAI,QAAwD,CAAC,WAAW,CAAC;IAC9F,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAErD,IAAI,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAClE,QAAQ,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IAChE,CAAC;IAED,gDAAgD;IAChD,IAAM,YAAY,GAAG,QAAmC,CAAC;IAEzD,OAAO,YAAY,CAAC,KAAK,CAAC;IAC1B,OAAO,YAAY,CAAC,YAAY,CAAC;IACjC,OAAO,YAAY,CAAC,WAAW,CAAC;IAChC,OAAO,YAAY,CAAC,wBAAwB,CAAC;IAC7C,OAAO,YAAY,CAAC,wBAAwB,CAAC;IAC7C,OAAO,YAAY,CAAC,cAAc,CAAC;IACnC,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC7B,OAAO,YAAY,CAAC,eAAe,CAAC;IACpC,OAAO,YAAY,CAAC,aAAa,CAAC;IAClC,OAAO,YAAY,CAAC,iBAAiB,CAAC;IACtC,OAAO,YAAY,CAAC,YAAY,CAAC;IACjC,OAAO,YAAY,CAAC,gBAAgB,CAAC;IACrC,OAAO,YAAY,CAAC,mBAAmB,CAAC;IAExC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAC;AACxC,CAAC;AAtCD,iCAsCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { LocalizedNumberFormatValues, ResolvedNumberFormatOptions } from '../types.js';
|
|
2
|
+
import type { InputType } from '../../core/index.js';
|
|
3
|
+
interface ResolveSelectionParam {
|
|
4
|
+
localizedValues: LocalizedNumberFormatValues;
|
|
5
|
+
previousLocalizedValues: LocalizedNumberFormatValues;
|
|
6
|
+
resolvedOptions: ResolvedNumberFormatOptions;
|
|
7
|
+
inputType: InputType;
|
|
8
|
+
addedValue: string;
|
|
9
|
+
previousValue: string;
|
|
10
|
+
nextValue: string;
|
|
11
|
+
changeStart: number;
|
|
12
|
+
changeEnd: number;
|
|
13
|
+
}
|
|
14
|
+
interface ResolveSelectionReturn {
|
|
15
|
+
start: number;
|
|
16
|
+
end: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Определяет позицию каретки для последующей установки
|
|
20
|
+
* @param param
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
export default function resolveSelection({ localizedValues, previousLocalizedValues, resolvedOptions, inputType, previousValue, addedValue, nextValue, changeStart, changeEnd, }: ResolveSelectionParam): ResolveSelectionReturn;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Определяет позицию каретки для последующей установки
|
|
5
|
+
* @param param
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
function resolveSelection(_a) {
|
|
9
|
+
var _b, _c, _d;
|
|
10
|
+
var localizedValues = _a.localizedValues, previousLocalizedValues = _a.previousLocalizedValues, resolvedOptions = _a.resolvedOptions, inputType = _a.inputType, previousValue = _a.previousValue, addedValue = _a.addedValue, nextValue = _a.nextValue, changeStart = _a.changeStart, changeEnd = _a.changeEnd;
|
|
11
|
+
if (RegExp("^[.,".concat(localizedValues.decimal, "]$")).test(addedValue) && previousValue.includes(localizedValues.decimal)) {
|
|
12
|
+
var decimalIndex = nextValue.indexOf(localizedValues.decimal);
|
|
13
|
+
if (decimalIndex !== -1) {
|
|
14
|
+
var position = decimalIndex + 1;
|
|
15
|
+
return { start: position, end: position };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (RegExp("^[\\-\\".concat(localizedValues.minusSign, "]$")).test(addedValue) &&
|
|
19
|
+
previousValue.includes(localizedValues.minusSign)) {
|
|
20
|
+
var minusSignIndex = nextValue.indexOf(localizedValues.minusSign);
|
|
21
|
+
if (minusSignIndex !== -1) {
|
|
22
|
+
var position = minusSignIndex + (localizedValues.signBackwards ? 0 : 1);
|
|
23
|
+
return { start: position, end: position };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// При стирании значения в `integer`, при условии что `integer` равен нулю,
|
|
27
|
+
// необходимо выделить все нули для последующего удаления `integer`. Такое
|
|
28
|
+
// поведение оправдано в случае если `minimumIntegerDigits` больше чем 1
|
|
29
|
+
if (inputType === 'deleteBackward' || inputType === 'deleteForward') {
|
|
30
|
+
var beforeDecimalPreviousValue = previousValue.split(previousLocalizedValues.decimal)[0];
|
|
31
|
+
if (changeEnd <= beforeDecimalPreviousValue.length &&
|
|
32
|
+
!RegExp("[".concat(previousLocalizedValues.digits.slice(1), "]")).test(beforeDecimalPreviousValue)) {
|
|
33
|
+
var firstPreviousIntegerDigitIndex = beforeDecimalPreviousValue.indexOf(previousLocalizedValues.digits[0]);
|
|
34
|
+
var lastPreviousIntegerDigitIndex = beforeDecimalPreviousValue.lastIndexOf(previousLocalizedValues.digits[0]);
|
|
35
|
+
var hasPreviousIntegerDigitIndex = firstPreviousIntegerDigitIndex !== -1 && lastPreviousIntegerDigitIndex !== -1;
|
|
36
|
+
// Нам не нужно повторно сохранять выделение
|
|
37
|
+
var hasSelection = changeStart === firstPreviousIntegerDigitIndex && changeEnd === lastPreviousIntegerDigitIndex + 1;
|
|
38
|
+
if (hasPreviousIntegerDigitIndex &&
|
|
39
|
+
!hasSelection &&
|
|
40
|
+
changeEnd > firstPreviousIntegerDigitIndex &&
|
|
41
|
+
changeEnd <= lastPreviousIntegerDigitIndex + 1) {
|
|
42
|
+
return { start: firstPreviousIntegerDigitIndex, end: lastPreviousIntegerDigitIndex + 1 };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
var selection = nextValue.length;
|
|
47
|
+
// Поскольку длина значения способна меняться, за счёт добавления/удаления
|
|
48
|
+
// символов разрядности, гарантированным способом получить точную позицию
|
|
49
|
+
// каретки, в рамках изменения значения при добавлении/удалении значения,
|
|
50
|
+
// будет подсчёт количества цифр до выделенной области изменения (до `changeStart`).
|
|
51
|
+
var countStableDigits = 0;
|
|
52
|
+
// Находим символы "устойчивого" числа до `changeStart` (не учитывая
|
|
53
|
+
// нули от начала значения до первой цифры не равной нулю в `integer`)
|
|
54
|
+
for (var i = 0, start = false; i < changeStart; i++) {
|
|
55
|
+
var isDigit = previousLocalizedValues.digits.includes(previousValue[i]);
|
|
56
|
+
if (!start) {
|
|
57
|
+
var isDecimal = previousValue[i] === previousLocalizedValues.decimal;
|
|
58
|
+
var isNaturalDigit = isDigit && previousValue[i] !== previousLocalizedValues.digits[0];
|
|
59
|
+
if (isDecimal || isNaturalDigit)
|
|
60
|
+
start = true;
|
|
61
|
+
}
|
|
62
|
+
if (start && isDigit)
|
|
63
|
+
countStableDigits += 1;
|
|
64
|
+
}
|
|
65
|
+
// Важно учесть добавленные символы, в противном
|
|
66
|
+
// случае позиция каретки не будет сдвигаться
|
|
67
|
+
if (inputType === 'insert') {
|
|
68
|
+
var previousValueBeforeSelectionStartRange = previousValue.slice(0, changeStart);
|
|
69
|
+
// eslint-disable-next-line prefer-const
|
|
70
|
+
var _e = previousValueBeforeSelectionStartRange
|
|
71
|
+
.replace(RegExp("[^".concat(previousLocalizedValues.decimal).concat(previousLocalizedValues.digits, "]"), 'g'), '')
|
|
72
|
+
.replace(RegExp("^".concat(previousLocalizedValues.digits[0], "+"), 'g'), '')
|
|
73
|
+
.split(previousLocalizedValues.decimal), previousInteger = _e[0], _f = _e[1], previousFraction = _f === void 0 ? '' : _f;
|
|
74
|
+
var regExp$1 = RegExp("[^\\d".concat(localizedValues.digits, "]+"), 'g');
|
|
75
|
+
var previousDecimalIndex = previousValue.indexOf(previousLocalizedValues.decimal);
|
|
76
|
+
var absAdded = addedValue
|
|
77
|
+
.replace(RegExp("[\\-\\".concat(localizedValues.minusSign, "]"), 'g'), '')
|
|
78
|
+
.replace(RegExp("[,".concat(localizedValues.decimal, "]"), 'g'), '.');
|
|
79
|
+
// Поскольку десятичный разделитель не может находиться
|
|
80
|
+
// перед имеющимся разделителем, нам важно удалить его
|
|
81
|
+
if (previousDecimalIndex !== -1 && changeEnd <= previousDecimalIndex) {
|
|
82
|
+
absAdded = absAdded.replace(regExp$1, '');
|
|
83
|
+
}
|
|
84
|
+
var _g = absAdded.split('.'), addedInteger = _g[0], _h = _g[1], addedFraction = _h === void 0 ? '' : _h;
|
|
85
|
+
if (previousDecimalIndex !== -1 && changeStart > previousDecimalIndex) {
|
|
86
|
+
if (absAdded.includes('.')) {
|
|
87
|
+
var joinedPreviousInteger = previousInteger + previousFraction;
|
|
88
|
+
if (joinedPreviousInteger.length > resolvedOptions.maximumIntegerDigits) {
|
|
89
|
+
countStableDigits = resolvedOptions.maximumIntegerDigits;
|
|
90
|
+
previousInteger = joinedPreviousInteger.slice(0, resolvedOptions.maximumIntegerDigits);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
addedFraction = addedInteger;
|
|
95
|
+
addedInteger = '';
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
var p$1 = "[".concat(previousLocalizedValues.decimal).concat(previousLocalizedValues.digits.slice(1), "]");
|
|
99
|
+
if (!RegExp(p$1).test(previousValueBeforeSelectionStartRange)) {
|
|
100
|
+
var p$2 = "^[0".concat(previousLocalizedValues.digits[0], "]+");
|
|
101
|
+
addedInteger = addedInteger.replace(RegExp(p$2, 'g'), '');
|
|
102
|
+
}
|
|
103
|
+
var normalizedAdded = addedInteger.slice(0, resolvedOptions.maximumIntegerDigits - previousInteger.length) + addedFraction;
|
|
104
|
+
countStableDigits += normalizedAdded.replace(regExp$1, '').length;
|
|
105
|
+
}
|
|
106
|
+
// Вычисляем первоначальную позицию каретки по индексу отформатированного
|
|
107
|
+
// значения путём подсчёта количества цифр "устойчивого" числа, где:
|
|
108
|
+
// `start` - начало "устойчивого" числа (не учитывая нули от начала
|
|
109
|
+
// значения до первой цифры не равной нулю в `integer`)
|
|
110
|
+
// `countDigits` - количество найденных символов после начала "устойчивого" числа\
|
|
111
|
+
// Порядок инструкций имеет значение!
|
|
112
|
+
for (var i = 0, start = false, countDigits = 0; i < nextValue.length; i++) {
|
|
113
|
+
if (!start &&
|
|
114
|
+
(localizedValues.decimal === nextValue[i] || localizedValues.digits.slice(1).includes(nextValue[i]))) {
|
|
115
|
+
start = true;
|
|
116
|
+
}
|
|
117
|
+
if (start && countDigits >= countStableDigits) {
|
|
118
|
+
selection = i;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
if (start && localizedValues.digits.includes(nextValue[i])) {
|
|
122
|
+
countDigits += 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Сдвигаем каретку к ближайшей цифре
|
|
126
|
+
if (inputType === 'deleteForward') {
|
|
127
|
+
var p$1 = "^.{".concat(selection, "}[^").concat(localizedValues.digits, "]*[\\").concat(localizedValues.minusSign).concat(localizedValues.digits, "]");
|
|
128
|
+
var nextDigitIndex = (_b = nextValue.match(RegExp(p$1))) === null || _b === void 0 ? void 0 : _b[0].length;
|
|
129
|
+
if (nextDigitIndex !== undefined) {
|
|
130
|
+
selection = nextDigitIndex - 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// При `deleteBackward` нам важно поставить каретку после знака минуса, если такой существует
|
|
135
|
+
var p$1 = "[".concat(inputType === 'deleteBackward' ? "\\".concat(localizedValues.minusSign) : '').concat(localizedValues.digits, "][^").concat(localizedValues.digits, "]*.{").concat(nextValue.length - selection, "}$");
|
|
136
|
+
var previousDigitIndex = (_c = nextValue.match(RegExp(p$1))) === null || _c === void 0 ? void 0 : _c.index;
|
|
137
|
+
if (previousDigitIndex !== undefined) {
|
|
138
|
+
selection = previousDigitIndex + 1;
|
|
139
|
+
}
|
|
140
|
+
if (nextValue[selection] === localizedValues.decimal &&
|
|
141
|
+
RegExp("[.,".concat(localizedValues.decimal, "]")).test((_d = addedValue[addedValue.length - 1]) !== null && _d !== void 0 ? _d : '')) {
|
|
142
|
+
selection += 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Страхуем границы позиции каретки
|
|
146
|
+
{
|
|
147
|
+
var p$1 = "[\\".concat(localizedValues.minusSign).concat(localizedValues.decimal).concat(localizedValues.digits.slice(1), "]");
|
|
148
|
+
var p$2 = "[\\".concat(localizedValues.minusSign).concat(localizedValues.digits, "][^").concat(localizedValues.digits, "]*$");
|
|
149
|
+
var firstStableDigitIndex = nextValue.search(RegExp(p$1));
|
|
150
|
+
var lastDigitIndex = nextValue.search(RegExp(p$2));
|
|
151
|
+
if (firstStableDigitIndex !== -1 && selection < firstStableDigitIndex) {
|
|
152
|
+
selection = firstStableDigitIndex;
|
|
153
|
+
}
|
|
154
|
+
else if (lastDigitIndex !== -1 && selection > lastDigitIndex + 1) {
|
|
155
|
+
selection = lastDigitIndex + 1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return { start: selection, end: selection };
|
|
159
|
+
}
|
|
160
|
+
exports.default = resolveSelection;
|
|
161
|
+
//# sourceMappingURL=resolveSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveSelection.js","sourceRoot":"","sources":["../../../../../../../../src/ui/components/form/input-mask/lib/number-format/utils/resolveSelection.ts"],"names":[],"mappings":"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"}
|