@alfalab/core-components-phone-input 7.5.7 → 7.5.8
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/Component.js +18 -21
- package/cssm/Component.js +18 -21
- package/cssm/utils/check-insert-before.d.ts +7 -0
- package/cssm/utils/check-insert-before.js +44 -0
- package/esm/Component.js +18 -21
- package/esm/utils/check-insert-before.d.ts +7 -0
- package/esm/utils/check-insert-before.js +40 -0
- package/modern/Component.js +18 -21
- package/modern/utils/check-insert-before.d.ts +7 -0
- package/modern/utils/check-insert-before.js +40 -0
- package/moderncssm/Component.js +18 -21
- package/moderncssm/utils/check-insert-before.d.ts +7 -0
- package/moderncssm/utils/check-insert-before.js +40 -0
- package/package.json +4 -4
- package/src/Component.tsx +24 -26
- package/src/utils/check-insert-before.ts +43 -0
- package/utils/check-insert-before.d.ts +7 -0
- package/utils/check-insert-before.js +44 -0
package/Component.js
CHANGED
|
@@ -7,6 +7,7 @@ var React = require('react');
|
|
|
7
7
|
var mergeRefs = require('react-merge-refs');
|
|
8
8
|
var textMaskCore = require('text-mask-core');
|
|
9
9
|
var coreComponentsMaskedInput = require('@alfalab/core-components-masked-input');
|
|
10
|
+
var utils_checkInsertBefore = require('./utils/check-insert-before.js');
|
|
10
11
|
var utils_index = require('./utils/index.js');
|
|
11
12
|
|
|
12
13
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
@@ -41,10 +42,21 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
41
42
|
var previousValueWithoutFormatting = previousConformedValue
|
|
42
43
|
? utils_index.deleteFormatting(previousConformedValue)
|
|
43
44
|
: '';
|
|
45
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
46
|
+
var digits = rawValue.replace(/\D/g, '');
|
|
47
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
48
|
+
var processedDigits = digits;
|
|
49
|
+
if (digits.length === 11 &&
|
|
50
|
+
(digits.startsWith('7') || digits.startsWith('8'))) {
|
|
51
|
+
processedDigits = digits.slice(1);
|
|
52
|
+
}
|
|
53
|
+
var masked = textMaskCore.conformToMask("+7".concat(processedDigits), mask, config);
|
|
54
|
+
return masked.conformedValue;
|
|
55
|
+
}
|
|
44
56
|
/*
|
|
45
57
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
46
58
|
*/
|
|
47
|
-
if (previousConformedValue
|
|
59
|
+
if (utils_checkInsertBefore.checkInsertBefore(previousConformedValue, rawValue)) {
|
|
48
60
|
var newRaw = utils_index.deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
49
61
|
conformedValue = textMaskCore.conformToMask(newRaw, mask, config).conformedValue;
|
|
50
62
|
}
|
|
@@ -73,19 +85,6 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
73
85
|
if (rawValue === countryPrefix) {
|
|
74
86
|
return rawValue;
|
|
75
87
|
}
|
|
76
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
77
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
78
|
-
var masked = textMaskCore.conformToMask("+7".concat(rawValue), mask, config);
|
|
79
|
-
return masked.conformedValue;
|
|
80
|
-
}
|
|
81
|
-
/*
|
|
82
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
83
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
84
|
-
*/
|
|
85
|
-
if (rawValue[1] === '7') {
|
|
86
|
-
var masked = textMaskCore.conformToMask("+7".concat(rawValue), mask, config);
|
|
87
|
-
return masked.conformedValue;
|
|
88
|
-
}
|
|
89
88
|
var insertedNumber = utils_index.getInsertedNumber({
|
|
90
89
|
rawValue: rawValue,
|
|
91
90
|
clearableCountryCode: clearableCountryCode,
|
|
@@ -93,8 +92,8 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
93
92
|
previousConformedValue: previousConformedValue,
|
|
94
93
|
});
|
|
95
94
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
96
|
-
if (
|
|
97
|
-
|
|
95
|
+
if ((insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
96
|
+
insertedNumber.length >= 10) {
|
|
98
97
|
var masked = textMaskCore.conformToMask("+7".concat(insertedNumber.slice(1)), mask, config);
|
|
99
98
|
return masked.conformedValue;
|
|
100
99
|
}
|
|
@@ -102,12 +101,10 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
102
101
|
if (rawValue.length === 1 && ['7', '8'].includes(rawValue[0])) {
|
|
103
102
|
return countryPrefix;
|
|
104
103
|
}
|
|
105
|
-
|
|
106
|
-
if (
|
|
104
|
+
// Запрет на удаление кода страны
|
|
105
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
107
106
|
utils_index.setCaretPosition({ position: countryPrefix.length, inputRef: inputRef });
|
|
108
|
-
|
|
109
|
-
return countryPrefix;
|
|
110
|
-
return false;
|
|
107
|
+
return rawValue.length ? false : countryPrefix;
|
|
111
108
|
}
|
|
112
109
|
return conformedValue;
|
|
113
110
|
}, [clearableCountryCode]);
|
package/cssm/Component.js
CHANGED
|
@@ -7,6 +7,7 @@ var React = require('react');
|
|
|
7
7
|
var mergeRefs = require('react-merge-refs');
|
|
8
8
|
var textMaskCore = require('text-mask-core');
|
|
9
9
|
var coreComponentsMaskedInput = require('@alfalab/core-components-masked-input/cssm');
|
|
10
|
+
var utils_checkInsertBefore = require('./utils/check-insert-before.js');
|
|
10
11
|
var utils_index = require('./utils/index.js');
|
|
11
12
|
|
|
12
13
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
@@ -41,10 +42,21 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
41
42
|
var previousValueWithoutFormatting = previousConformedValue
|
|
42
43
|
? utils_index.deleteFormatting(previousConformedValue)
|
|
43
44
|
: '';
|
|
45
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
46
|
+
var digits = rawValue.replace(/\D/g, '');
|
|
47
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
48
|
+
var processedDigits = digits;
|
|
49
|
+
if (digits.length === 11 &&
|
|
50
|
+
(digits.startsWith('7') || digits.startsWith('8'))) {
|
|
51
|
+
processedDigits = digits.slice(1);
|
|
52
|
+
}
|
|
53
|
+
var masked = textMaskCore.conformToMask("+7".concat(processedDigits), mask, config);
|
|
54
|
+
return masked.conformedValue;
|
|
55
|
+
}
|
|
44
56
|
/*
|
|
45
57
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
46
58
|
*/
|
|
47
|
-
if (previousConformedValue
|
|
59
|
+
if (utils_checkInsertBefore.checkInsertBefore(previousConformedValue, rawValue)) {
|
|
48
60
|
var newRaw = utils_index.deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
49
61
|
conformedValue = textMaskCore.conformToMask(newRaw, mask, config).conformedValue;
|
|
50
62
|
}
|
|
@@ -73,19 +85,6 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
73
85
|
if (rawValue === countryPrefix) {
|
|
74
86
|
return rawValue;
|
|
75
87
|
}
|
|
76
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
77
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
78
|
-
var masked = textMaskCore.conformToMask("+7".concat(rawValue), mask, config);
|
|
79
|
-
return masked.conformedValue;
|
|
80
|
-
}
|
|
81
|
-
/*
|
|
82
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
83
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
84
|
-
*/
|
|
85
|
-
if (rawValue[1] === '7') {
|
|
86
|
-
var masked = textMaskCore.conformToMask("+7".concat(rawValue), mask, config);
|
|
87
|
-
return masked.conformedValue;
|
|
88
|
-
}
|
|
89
88
|
var insertedNumber = utils_index.getInsertedNumber({
|
|
90
89
|
rawValue: rawValue,
|
|
91
90
|
clearableCountryCode: clearableCountryCode,
|
|
@@ -93,8 +92,8 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
93
92
|
previousConformedValue: previousConformedValue,
|
|
94
93
|
});
|
|
95
94
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
96
|
-
if (
|
|
97
|
-
|
|
95
|
+
if ((insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
96
|
+
insertedNumber.length >= 10) {
|
|
98
97
|
var masked = textMaskCore.conformToMask("+7".concat(insertedNumber.slice(1)), mask, config);
|
|
99
98
|
return masked.conformedValue;
|
|
100
99
|
}
|
|
@@ -102,12 +101,10 @@ var PhoneInput = React__default.default.forwardRef(function (_a, ref) {
|
|
|
102
101
|
if (rawValue.length === 1 && ['7', '8'].includes(rawValue[0])) {
|
|
103
102
|
return countryPrefix;
|
|
104
103
|
}
|
|
105
|
-
|
|
106
|
-
if (
|
|
104
|
+
// Запрет на удаление кода страны
|
|
105
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
107
106
|
utils_index.setCaretPosition({ position: countryPrefix.length, inputRef: inputRef });
|
|
108
|
-
|
|
109
|
-
return countryPrefix;
|
|
110
|
-
return false;
|
|
107
|
+
return rawValue.length ? false : countryPrefix;
|
|
111
108
|
}
|
|
112
109
|
return conformedValue;
|
|
113
110
|
}, [clearableCountryCode]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
declare const checkInsertBefore: (baseNumber: string | undefined, modifiedNumber: string) => boolean;
|
|
7
|
+
export { checkInsertBefore };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
7
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
8
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
9
|
+
*/
|
|
10
|
+
var checkInsertBefore = function (baseNumber, modifiedNumber) {
|
|
11
|
+
if (baseNumber) {
|
|
12
|
+
try {
|
|
13
|
+
/** Удаляем лишние символы */
|
|
14
|
+
// +7 123 => 7123
|
|
15
|
+
var base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
16
|
+
// +7 123 => +7123
|
|
17
|
+
var modified = modifiedNumber.replace(/\s+/g, '');
|
|
18
|
+
/**
|
|
19
|
+
* Числа вставлены между [+] и номером
|
|
20
|
+
* +7 123 => paste 222 => +2227 123
|
|
21
|
+
*/
|
|
22
|
+
var afterPlusPattern = new RegExp("^\\+\\d*".concat(base, "$"));
|
|
23
|
+
if (afterPlusPattern.test(modified)) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Числа вставлены перед [+]
|
|
28
|
+
* +7 123 => paste 222 => 222+7 123
|
|
29
|
+
*/
|
|
30
|
+
var beforePlusPattern = new RegExp("^\\d*\\+".concat(base, "$"));
|
|
31
|
+
if (beforePlusPattern.test(modified)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.error('checkInsertAtBeginning', e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.checkInsertBefore = checkInsertBefore;
|
package/esm/Component.js
CHANGED
|
@@ -3,6 +3,7 @@ import React, { useRef, useCallback } from 'react';
|
|
|
3
3
|
import mergeRefs from 'react-merge-refs';
|
|
4
4
|
import { conformToMask } from 'text-mask-core';
|
|
5
5
|
import { MaskedInput } from '@alfalab/core-components-masked-input/esm';
|
|
6
|
+
import { checkInsertBefore } from './utils/check-insert-before.js';
|
|
6
7
|
import { deleteFormatting, deleteMaskChar, setCaretPosition, getInsertedNumber } from './utils/index.js';
|
|
7
8
|
|
|
8
9
|
var mask = [
|
|
@@ -32,10 +33,21 @@ var PhoneInput = React.forwardRef(function (_a, ref) {
|
|
|
32
33
|
var previousValueWithoutFormatting = previousConformedValue
|
|
33
34
|
? deleteFormatting(previousConformedValue)
|
|
34
35
|
: '';
|
|
36
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
37
|
+
var digits = rawValue.replace(/\D/g, '');
|
|
38
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
39
|
+
var processedDigits = digits;
|
|
40
|
+
if (digits.length === 11 &&
|
|
41
|
+
(digits.startsWith('7') || digits.startsWith('8'))) {
|
|
42
|
+
processedDigits = digits.slice(1);
|
|
43
|
+
}
|
|
44
|
+
var masked = conformToMask("+7".concat(processedDigits), mask, config);
|
|
45
|
+
return masked.conformedValue;
|
|
46
|
+
}
|
|
35
47
|
/*
|
|
36
48
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
37
49
|
*/
|
|
38
|
-
if (previousConformedValue
|
|
50
|
+
if (checkInsertBefore(previousConformedValue, rawValue)) {
|
|
39
51
|
var newRaw = deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
40
52
|
conformedValue = conformToMask(newRaw, mask, config).conformedValue;
|
|
41
53
|
}
|
|
@@ -64,19 +76,6 @@ var PhoneInput = React.forwardRef(function (_a, ref) {
|
|
|
64
76
|
if (rawValue === countryPrefix) {
|
|
65
77
|
return rawValue;
|
|
66
78
|
}
|
|
67
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
68
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
69
|
-
var masked = conformToMask("+7".concat(rawValue), mask, config);
|
|
70
|
-
return masked.conformedValue;
|
|
71
|
-
}
|
|
72
|
-
/*
|
|
73
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
74
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
75
|
-
*/
|
|
76
|
-
if (rawValue[1] === '7') {
|
|
77
|
-
var masked = conformToMask("+7".concat(rawValue), mask, config);
|
|
78
|
-
return masked.conformedValue;
|
|
79
|
-
}
|
|
80
79
|
var insertedNumber = getInsertedNumber({
|
|
81
80
|
rawValue: rawValue,
|
|
82
81
|
clearableCountryCode: clearableCountryCode,
|
|
@@ -84,8 +83,8 @@ var PhoneInput = React.forwardRef(function (_a, ref) {
|
|
|
84
83
|
previousConformedValue: previousConformedValue,
|
|
85
84
|
});
|
|
86
85
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
87
|
-
if (
|
|
88
|
-
|
|
86
|
+
if ((insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
87
|
+
insertedNumber.length >= 10) {
|
|
89
88
|
var masked = conformToMask("+7".concat(insertedNumber.slice(1)), mask, config);
|
|
90
89
|
return masked.conformedValue;
|
|
91
90
|
}
|
|
@@ -93,12 +92,10 @@ var PhoneInput = React.forwardRef(function (_a, ref) {
|
|
|
93
92
|
if (rawValue.length === 1 && ['7', '8'].includes(rawValue[0])) {
|
|
94
93
|
return countryPrefix;
|
|
95
94
|
}
|
|
96
|
-
|
|
97
|
-
if (
|
|
95
|
+
// Запрет на удаление кода страны
|
|
96
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
98
97
|
setCaretPosition({ position: countryPrefix.length, inputRef: inputRef });
|
|
99
|
-
|
|
100
|
-
return countryPrefix;
|
|
101
|
-
return false;
|
|
98
|
+
return rawValue.length ? false : countryPrefix;
|
|
102
99
|
}
|
|
103
100
|
return conformedValue;
|
|
104
101
|
}, [clearableCountryCode]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
declare const checkInsertBefore: (baseNumber: string | undefined, modifiedNumber: string) => boolean;
|
|
7
|
+
export { checkInsertBefore };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
var checkInsertBefore = function (baseNumber, modifiedNumber) {
|
|
7
|
+
if (baseNumber) {
|
|
8
|
+
try {
|
|
9
|
+
/** Удаляем лишние символы */
|
|
10
|
+
// +7 123 => 7123
|
|
11
|
+
var base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
12
|
+
// +7 123 => +7123
|
|
13
|
+
var modified = modifiedNumber.replace(/\s+/g, '');
|
|
14
|
+
/**
|
|
15
|
+
* Числа вставлены между [+] и номером
|
|
16
|
+
* +7 123 => paste 222 => +2227 123
|
|
17
|
+
*/
|
|
18
|
+
var afterPlusPattern = new RegExp("^\\+\\d*".concat(base, "$"));
|
|
19
|
+
if (afterPlusPattern.test(modified)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Числа вставлены перед [+]
|
|
24
|
+
* +7 123 => paste 222 => 222+7 123
|
|
25
|
+
*/
|
|
26
|
+
var beforePlusPattern = new RegExp("^\\d*\\+".concat(base, "$"));
|
|
27
|
+
if (beforePlusPattern.test(modified)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.error('checkInsertAtBeginning', e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { checkInsertBefore };
|
package/modern/Component.js
CHANGED
|
@@ -2,6 +2,7 @@ import React, { useRef, useCallback } from 'react';
|
|
|
2
2
|
import mergeRefs from 'react-merge-refs';
|
|
3
3
|
import { conformToMask } from 'text-mask-core';
|
|
4
4
|
import { MaskedInput } from '@alfalab/core-components-masked-input/modern';
|
|
5
|
+
import { checkInsertBefore } from './utils/check-insert-before.js';
|
|
5
6
|
import { deleteFormatting, deleteMaskChar, setCaretPosition, getInsertedNumber } from './utils/index.js';
|
|
6
7
|
|
|
7
8
|
/* eslint-disable complexity, no-param-reassign */
|
|
@@ -31,10 +32,21 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
31
32
|
const previousValueWithoutFormatting = previousConformedValue
|
|
32
33
|
? deleteFormatting(previousConformedValue)
|
|
33
34
|
: '';
|
|
35
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
36
|
+
const digits = rawValue.replace(/\D/g, '');
|
|
37
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
38
|
+
let processedDigits = digits;
|
|
39
|
+
if (digits.length === 11 &&
|
|
40
|
+
(digits.startsWith('7') || digits.startsWith('8'))) {
|
|
41
|
+
processedDigits = digits.slice(1);
|
|
42
|
+
}
|
|
43
|
+
const masked = conformToMask(`+7${processedDigits}`, mask, config);
|
|
44
|
+
return masked.conformedValue;
|
|
45
|
+
}
|
|
34
46
|
/*
|
|
35
47
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
36
48
|
*/
|
|
37
|
-
if (previousConformedValue
|
|
49
|
+
if (checkInsertBefore(previousConformedValue, rawValue)) {
|
|
38
50
|
const newRaw = deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
39
51
|
conformedValue = conformToMask(newRaw, mask, config).conformedValue;
|
|
40
52
|
}
|
|
@@ -63,19 +75,6 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
63
75
|
if (rawValue === countryPrefix) {
|
|
64
76
|
return rawValue;
|
|
65
77
|
}
|
|
66
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
67
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
68
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
69
|
-
return masked.conformedValue;
|
|
70
|
-
}
|
|
71
|
-
/*
|
|
72
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
73
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
74
|
-
*/
|
|
75
|
-
if (rawValue[1] === '7') {
|
|
76
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
77
|
-
return masked.conformedValue;
|
|
78
|
-
}
|
|
79
78
|
const insertedNumber = getInsertedNumber({
|
|
80
79
|
rawValue,
|
|
81
80
|
clearableCountryCode,
|
|
@@ -83,8 +82,8 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
83
82
|
previousConformedValue,
|
|
84
83
|
});
|
|
85
84
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
86
|
-
if (
|
|
87
|
-
|
|
85
|
+
if ((insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
86
|
+
insertedNumber.length >= 10) {
|
|
88
87
|
const masked = conformToMask(`+7${insertedNumber.slice(1)}`, mask, config);
|
|
89
88
|
return masked.conformedValue;
|
|
90
89
|
}
|
|
@@ -92,12 +91,10 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
92
91
|
if (rawValue.length === 1 && ['7', '8'].includes(rawValue[0])) {
|
|
93
92
|
return countryPrefix;
|
|
94
93
|
}
|
|
95
|
-
|
|
96
|
-
if (
|
|
94
|
+
// Запрет на удаление кода страны
|
|
95
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
97
96
|
setCaretPosition({ position: countryPrefix.length, inputRef });
|
|
98
|
-
|
|
99
|
-
return countryPrefix;
|
|
100
|
-
return false;
|
|
97
|
+
return rawValue.length ? false : countryPrefix;
|
|
101
98
|
}
|
|
102
99
|
return conformedValue;
|
|
103
100
|
}, [clearableCountryCode]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
declare const checkInsertBefore: (baseNumber: string | undefined, modifiedNumber: string) => boolean;
|
|
7
|
+
export { checkInsertBefore };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
const checkInsertBefore = (baseNumber, modifiedNumber) => {
|
|
7
|
+
if (baseNumber) {
|
|
8
|
+
try {
|
|
9
|
+
/** Удаляем лишние символы */
|
|
10
|
+
// +7 123 => 7123
|
|
11
|
+
const base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
12
|
+
// +7 123 => +7123
|
|
13
|
+
const modified = modifiedNumber.replace(/\s+/g, '');
|
|
14
|
+
/**
|
|
15
|
+
* Числа вставлены между [+] и номером
|
|
16
|
+
* +7 123 => paste 222 => +2227 123
|
|
17
|
+
*/
|
|
18
|
+
const afterPlusPattern = new RegExp(`^\\+\\d*${base}$`);
|
|
19
|
+
if (afterPlusPattern.test(modified)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Числа вставлены перед [+]
|
|
24
|
+
* +7 123 => paste 222 => 222+7 123
|
|
25
|
+
*/
|
|
26
|
+
const beforePlusPattern = new RegExp(`^\\d*\\+${base}$`);
|
|
27
|
+
if (beforePlusPattern.test(modified)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.error('checkInsertAtBeginning', e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { checkInsertBefore };
|
package/moderncssm/Component.js
CHANGED
|
@@ -2,6 +2,7 @@ import React, { useRef, useCallback } from 'react';
|
|
|
2
2
|
import mergeRefs from 'react-merge-refs';
|
|
3
3
|
import { conformToMask } from 'text-mask-core';
|
|
4
4
|
import { MaskedInput } from '@alfalab/core-components-masked-input/moderncssm';
|
|
5
|
+
import { checkInsertBefore } from './utils/check-insert-before.js';
|
|
5
6
|
import { deleteFormatting, deleteMaskChar, setCaretPosition, getInsertedNumber } from './utils/index.js';
|
|
6
7
|
|
|
7
8
|
/* eslint-disable complexity, no-param-reassign */
|
|
@@ -31,10 +32,21 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
31
32
|
const previousValueWithoutFormatting = previousConformedValue
|
|
32
33
|
? deleteFormatting(previousConformedValue)
|
|
33
34
|
: '';
|
|
35
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
36
|
+
const digits = rawValue.replace(/\D/g, '');
|
|
37
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
38
|
+
let processedDigits = digits;
|
|
39
|
+
if (digits.length === 11 &&
|
|
40
|
+
(digits.startsWith('7') || digits.startsWith('8'))) {
|
|
41
|
+
processedDigits = digits.slice(1);
|
|
42
|
+
}
|
|
43
|
+
const masked = conformToMask(`+7${processedDigits}`, mask, config);
|
|
44
|
+
return masked.conformedValue;
|
|
45
|
+
}
|
|
34
46
|
/*
|
|
35
47
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
36
48
|
*/
|
|
37
|
-
if (previousConformedValue
|
|
49
|
+
if (checkInsertBefore(previousConformedValue, rawValue)) {
|
|
38
50
|
const newRaw = deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
39
51
|
conformedValue = conformToMask(newRaw, mask, config).conformedValue;
|
|
40
52
|
}
|
|
@@ -63,19 +75,6 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
63
75
|
if (rawValue === countryPrefix) {
|
|
64
76
|
return rawValue;
|
|
65
77
|
}
|
|
66
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
67
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
68
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
69
|
-
return masked.conformedValue;
|
|
70
|
-
}
|
|
71
|
-
/*
|
|
72
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
73
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
74
|
-
*/
|
|
75
|
-
if (rawValue[1] === '7') {
|
|
76
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
77
|
-
return masked.conformedValue;
|
|
78
|
-
}
|
|
79
78
|
const insertedNumber = getInsertedNumber({
|
|
80
79
|
rawValue,
|
|
81
80
|
clearableCountryCode,
|
|
@@ -83,8 +82,8 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
83
82
|
previousConformedValue,
|
|
84
83
|
});
|
|
85
84
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
86
|
-
if (
|
|
87
|
-
|
|
85
|
+
if ((insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
86
|
+
insertedNumber.length >= 10) {
|
|
88
87
|
const masked = conformToMask(`+7${insertedNumber.slice(1)}`, mask, config);
|
|
89
88
|
return masked.conformedValue;
|
|
90
89
|
}
|
|
@@ -92,12 +91,10 @@ const PhoneInput = React.forwardRef(({ clearableCountryCode = true, ...restProps
|
|
|
92
91
|
if (rawValue.length === 1 && ['7', '8'].includes(rawValue[0])) {
|
|
93
92
|
return countryPrefix;
|
|
94
93
|
}
|
|
95
|
-
|
|
96
|
-
if (
|
|
94
|
+
// Запрет на удаление кода страны
|
|
95
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
97
96
|
setCaretPosition({ position: countryPrefix.length, inputRef });
|
|
98
|
-
|
|
99
|
-
return countryPrefix;
|
|
100
|
-
return false;
|
|
97
|
+
return rawValue.length ? false : countryPrefix;
|
|
101
98
|
}
|
|
102
99
|
return conformedValue;
|
|
103
100
|
}, [clearableCountryCode]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
declare const checkInsertBefore: (baseNumber: string | undefined, modifiedNumber: string) => boolean;
|
|
7
|
+
export { checkInsertBefore };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
const checkInsertBefore = (baseNumber, modifiedNumber) => {
|
|
7
|
+
if (baseNumber) {
|
|
8
|
+
try {
|
|
9
|
+
/** Удаляем лишние символы */
|
|
10
|
+
// +7 123 => 7123
|
|
11
|
+
const base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
12
|
+
// +7 123 => +7123
|
|
13
|
+
const modified = modifiedNumber.replace(/\s+/g, '');
|
|
14
|
+
/**
|
|
15
|
+
* Числа вставлены между [+] и номером
|
|
16
|
+
* +7 123 => paste 222 => +2227 123
|
|
17
|
+
*/
|
|
18
|
+
const afterPlusPattern = new RegExp(`^\\+\\d*${base}$`);
|
|
19
|
+
if (afterPlusPattern.test(modified)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Числа вставлены перед [+]
|
|
24
|
+
* +7 123 => paste 222 => 222+7 123
|
|
25
|
+
*/
|
|
26
|
+
const beforePlusPattern = new RegExp(`^\\d*\\+${base}$`);
|
|
27
|
+
if (beforePlusPattern.test(modified)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.error('checkInsertAtBeginning', e);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { checkInsertBefore };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfalab/core-components-phone-input",
|
|
3
|
-
"version": "7.5.
|
|
3
|
+
"version": "7.5.8",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"react": "^16.9.0 || ^17.0.1 || ^18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@alfalab/core-components-masked-input": "^6.3.
|
|
18
|
+
"@alfalab/core-components-masked-input": "^6.3.39",
|
|
19
19
|
"react-merge-refs": "^1.1.0",
|
|
20
20
|
"text-mask-core": "^5.1.2",
|
|
21
21
|
"tslib": "^2.4.0"
|
|
22
22
|
},
|
|
23
|
-
"themesVersion": "13.7.
|
|
24
|
-
"varsVersion": "9.20.
|
|
23
|
+
"themesVersion": "13.7.4",
|
|
24
|
+
"varsVersion": "9.20.1"
|
|
25
25
|
}
|
package/src/Component.tsx
CHANGED
|
@@ -5,6 +5,7 @@ import { conformToMask, TextMaskConfig } from 'text-mask-core';
|
|
|
5
5
|
|
|
6
6
|
import { MaskedInput, MaskedInputProps } from '@alfalab/core-components-masked-input';
|
|
7
7
|
|
|
8
|
+
import { checkInsertBefore } from './utils/check-insert-before';
|
|
8
9
|
import { deleteFormatting, deleteMaskChar, getInsertedNumber, setCaretPosition } from './utils';
|
|
9
10
|
|
|
10
11
|
const mask = [
|
|
@@ -44,10 +45,27 @@ export const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(
|
|
|
44
45
|
? deleteFormatting(previousConformedValue)
|
|
45
46
|
: '';
|
|
46
47
|
|
|
48
|
+
// Вставка номера с 10 или 11 цифрами без кода страны
|
|
49
|
+
const digits = rawValue.replace(/\D/g, '');
|
|
50
|
+
|
|
51
|
+
if ((digits.length === 10 || digits.length === 11) && !rawValue.startsWith('+7')) {
|
|
52
|
+
let processedDigits = digits;
|
|
53
|
+
|
|
54
|
+
if (
|
|
55
|
+
digits.length === 11 &&
|
|
56
|
+
(digits.startsWith('7') || digits.startsWith('8'))
|
|
57
|
+
) {
|
|
58
|
+
processedDigits = digits.slice(1);
|
|
59
|
+
}
|
|
60
|
+
const masked = conformToMask(`+7${processedDigits}`, mask, config);
|
|
61
|
+
|
|
62
|
+
return masked.conformedValue;
|
|
63
|
+
}
|
|
64
|
+
|
|
47
65
|
/*
|
|
48
66
|
* Удаляем лишний символ маски при вводе или вставке значений перед знаком + или после него.
|
|
49
67
|
*/
|
|
50
|
-
if (previousConformedValue
|
|
68
|
+
if (checkInsertBefore(previousConformedValue, rawValue)) {
|
|
51
69
|
const newRaw = deleteMaskChar(previousValueWithoutFormatting, rawValue);
|
|
52
70
|
|
|
53
71
|
conformedValue = conformToMask(newRaw, mask, config).conformedValue;
|
|
@@ -86,23 +104,6 @@ export const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(
|
|
|
86
104
|
return rawValue;
|
|
87
105
|
}
|
|
88
106
|
|
|
89
|
-
// Вставка номера с 10 цифрами без кода страны
|
|
90
|
-
if (rawValue.length === 10 && conformedValue.length === mask.length) {
|
|
91
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
92
|
-
|
|
93
|
-
return masked.conformedValue;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/*
|
|
97
|
-
* Код нужен для исправления ошибки в библиотеке text-mask: если цифра 7 находится на второй позиции при вставке, то она удаляется
|
|
98
|
-
* Это происходит потому что цифра 7 есть уже в маске
|
|
99
|
-
*/
|
|
100
|
-
if (rawValue[1] === '7') {
|
|
101
|
-
const masked = conformToMask(`+7${rawValue}`, mask, config);
|
|
102
|
-
|
|
103
|
-
return masked.conformedValue;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
107
|
const insertedNumber = getInsertedNumber({
|
|
107
108
|
rawValue,
|
|
108
109
|
clearableCountryCode,
|
|
@@ -112,8 +113,8 @@ export const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(
|
|
|
112
113
|
|
|
113
114
|
// Вставка номера, начинающегося с 8 или 7: 89990313131, 71112223344
|
|
114
115
|
if (
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
(insertedNumber.startsWith('7') || insertedNumber.startsWith('8')) &&
|
|
117
|
+
insertedNumber.length >= 10
|
|
117
118
|
) {
|
|
118
119
|
const masked = conformToMask(`+7${insertedNumber.slice(1)}`, mask, config);
|
|
119
120
|
|
|
@@ -125,14 +126,11 @@ export const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(
|
|
|
125
126
|
return countryPrefix;
|
|
126
127
|
}
|
|
127
128
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (abortCountryCodeClearing) {
|
|
129
|
+
// Запрет на удаление кода страны
|
|
130
|
+
if (!clearableCountryCode && !conformedValue) {
|
|
131
131
|
setCaretPosition({ position: countryPrefix.length, inputRef });
|
|
132
132
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return false;
|
|
133
|
+
return rawValue.length ? false : countryPrefix;
|
|
136
134
|
}
|
|
137
135
|
|
|
138
136
|
return conformedValue;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
export const checkInsertBefore = (baseNumber: string | undefined, modifiedNumber: string) => {
|
|
7
|
+
if (baseNumber) {
|
|
8
|
+
try {
|
|
9
|
+
/** Удаляем лишние символы */
|
|
10
|
+
// +7 123 => 7123
|
|
11
|
+
const base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
12
|
+
// +7 123 => +7123
|
|
13
|
+
const modified = modifiedNumber.replace(/\s+/g, '');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Числа вставлены между [+] и номером
|
|
17
|
+
* +7 123 => paste 222 => +2227 123
|
|
18
|
+
*/
|
|
19
|
+
const afterPlusPattern = new RegExp(`^\\+\\d*${base}$`);
|
|
20
|
+
|
|
21
|
+
if (afterPlusPattern.test(modified)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Числа вставлены перед [+]
|
|
27
|
+
* +7 123 => paste 222 => 222+7 123
|
|
28
|
+
*/
|
|
29
|
+
const beforePlusPattern = new RegExp(`^\\d*\\+${base}$`);
|
|
30
|
+
|
|
31
|
+
if (beforePlusPattern.test(modified)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return false;
|
|
36
|
+
} catch (e) {
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.error('checkInsertAtBeginning', e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return false;
|
|
43
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
3
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
4
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
5
|
+
*/
|
|
6
|
+
declare const checkInsertBefore: (baseNumber: string | undefined, modifiedNumber: string) => boolean;
|
|
7
|
+
export { checkInsertBefore };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Позволяет проверить что цифры были вставлены до или после знака плюс [+]
|
|
7
|
+
* @description +7 123 => paste 222 => +2227 123
|
|
8
|
+
* @description +7 123 => paste 222 => 222+7 123
|
|
9
|
+
*/
|
|
10
|
+
var checkInsertBefore = function (baseNumber, modifiedNumber) {
|
|
11
|
+
if (baseNumber) {
|
|
12
|
+
try {
|
|
13
|
+
/** Удаляем лишние символы */
|
|
14
|
+
// +7 123 => 7123
|
|
15
|
+
var base = baseNumber.replace(/\s+/g, '').replace('+', '');
|
|
16
|
+
// +7 123 => +7123
|
|
17
|
+
var modified = modifiedNumber.replace(/\s+/g, '');
|
|
18
|
+
/**
|
|
19
|
+
* Числа вставлены между [+] и номером
|
|
20
|
+
* +7 123 => paste 222 => +2227 123
|
|
21
|
+
*/
|
|
22
|
+
var afterPlusPattern = new RegExp("^\\+\\d*".concat(base, "$"));
|
|
23
|
+
if (afterPlusPattern.test(modified)) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Числа вставлены перед [+]
|
|
28
|
+
* +7 123 => paste 222 => 222+7 123
|
|
29
|
+
*/
|
|
30
|
+
var beforePlusPattern = new RegExp("^\\d*\\+".concat(base, "$"));
|
|
31
|
+
if (beforePlusPattern.test(modified)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.error('checkInsertAtBeginning', e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.checkInsertBefore = checkInsertBefore;
|