intelicoreact 0.1.56 → 0.1.59

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.
@@ -14,26 +14,26 @@ var getCaretPosition = function getCaretPosition(ctrl) {
14
14
  range.moveStart('character', -ctrl.value.length);
15
15
  var start = range.text.length - rangelen;
16
16
  return {
17
- 'start': start,
18
- 'end': start + rangelen
17
+ start: start,
18
+ end: start + rangelen
19
19
  };
20
20
  } // IE >=9 and other browsers
21
- else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
21
+ else if (ctrl.selectionStart || ctrl.selectionStart === '0') {
22
22
  return {
23
- 'start': ctrl.selectionStart,
24
- 'end': ctrl.selectionEnd
23
+ start: ctrl.selectionStart,
24
+ end: ctrl.selectionEnd
25
25
  };
26
26
  } else {
27
27
  return {
28
- 'start': 0,
29
- 'end': 0
28
+ start: 0,
29
+ end: 0
30
30
  };
31
31
  }
32
32
  };
33
33
 
34
34
  exports.getCaretPosition = getCaretPosition;
35
35
 
36
- var setCaretPosition = function setCaretPosition(ctrl, start, end) {
36
+ var setCaretPosition = function setCaretPosition(ctrl, start) {
37
37
  if (!ctrl) return false;
38
38
  var range = document.createRange();
39
39
  var sel = window.getSelection();
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.default = InputMask;
11
11
 
12
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
13
+
12
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -19,9 +21,7 @@ var _react = _interopRequireWildcard(require("react"));
19
21
 
20
22
  var _reactFeather = require("react-feather");
21
23
 
22
- var _index = require("../../../Constants/index.constants");
23
-
24
- var _usePrevious = _interopRequireDefault(require("../../../Functions/useFormTools/functions/usePrevious"));
24
+ var _indexConstants = require("./../../../Constants/index.constants.js");
25
25
 
26
26
  var _Hint = _interopRequireDefault(require("../../UI/Hint/Hint"));
27
27
 
@@ -31,6 +31,8 @@ var _InputCarretPosition = require("./InputCarretPosition");
31
31
 
32
32
  require("./InputMask.scss");
33
33
 
34
+ var _config = require("./config");
35
+
34
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
37
 
36
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -39,19 +41,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
39
41
 
40
42
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
41
43
 
42
- var UPPERCASE_LETTER_MASK_CHAR = 'L';
43
- var LOWERCASE_LETTER_MASK_CHAR = 'l';
44
- var DIGIT_MASK_CHAR = 'D';
45
- var SPACE_CHAR = "\xA0";
46
- var EXCLUDED_KEYS = ['Tab'];
47
- var DEFAULT_ERRORS = {
48
- onlyLetter: 'Type letter',
49
- onlyDigit: 'Type digit',
50
- onlyUpperCase: 'Type letter in UpperCase',
51
- onlyLowerCase: 'Type letter in LowerCase',
52
- default: null
53
- };
54
-
55
44
  function InputMask() {
56
45
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
57
46
  maskPattern = _ref.maskPattern,
@@ -83,7 +72,7 @@ function InputMask() {
83
72
  _ref$className = _ref.className,
84
73
  className = _ref$className === void 0 ? '' : _ref$className,
85
74
  _ref$errors = _ref.errors,
86
- customErrors = _ref$errors === void 0 ? DEFAULT_ERRORS : _ref$errors,
75
+ customErrors = _ref$errors === void 0 ? _config.DEFAULT_ERRORS : _ref$errors,
87
76
  _ref$error = _ref.error,
88
77
  customError = _ref$error === void 0 ? '' : _ref$error,
89
78
  ref = _ref.ref,
@@ -108,7 +97,7 @@ function InputMask() {
108
97
  _ref$hintPosition = _ref.hintPosition,
109
98
  hintPosition = _ref$hintPosition === void 0 ? 'right' : _ref$hintPosition;
110
99
 
111
- var errors = _objectSpread(_objectSpread({}, DEFAULT_ERRORS), customErrors);
100
+ var errors = _objectSpread(_objectSpread({}, _config.DEFAULT_ERRORS), customErrors);
112
101
 
113
102
  var _useState = (0, _react.useState)(false),
114
103
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -124,13 +113,14 @@ function InputMask() {
124
113
 
125
114
  var _useState5 = (0, _react.useState)(false),
126
115
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
127
- isSelecting = _useState6[0],
128
- setIsSelecting = _useState6[1];
116
+ isFocused = _useState6[0],
117
+ setFocused = _useState6[1];
129
118
 
130
119
  var _useState7 = (0, _react.useState)(false),
131
120
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
132
- isFocused = _useState8[0],
133
- setFocused = _useState8[1];
121
+ isInitValue = _useState8[0],
122
+ setIsInitValue = _useState8[1]; // ERRORS MANAGEMENT FUNCTIONS | START //
123
+
134
124
 
135
125
  var _useState9 = (0, _react.useState)(false),
136
126
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
@@ -149,22 +139,69 @@ function InputMask() {
149
139
 
150
140
  var clearErrorMessage = function clearErrorMessage() {
151
141
  return setErrorMessage(errors.default);
152
- };
142
+ }; // ERRORS MANAGEMENT FUNCTIONS | END //
143
+ // SELECTION MANAGEMENT FUNCTIONS | START //
153
144
 
154
- var _useState15 = (0, _react.useState)(null),
145
+
146
+ var _useState15 = (0, _react.useState)(false),
155
147
  _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
156
- focusedItemRef = _useState16[0],
157
- setFocusedItemRef = _useState16[1];
148
+ isSelecting = _useState16[0],
149
+ setIsSelecting = _useState16[1];
158
150
 
159
- var _useState17 = (0, _react.useState)([]),
151
+ var _useState17 = (0, _react.useState)(''),
160
152
  _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
161
- innerValue = _useState18[0],
162
- setInnerValue = _useState18[1];
153
+ selectedText = _useState18[0],
154
+ setSelectedText = _useState18[1];
163
155
 
164
- var _useState19 = (0, _react.useState)(''),
156
+ var _useState19 = (0, _react.useState)(null),
165
157
  _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
166
- selectedText = _useState20[0],
167
- setSelectedText = _useState20[1];
158
+ selectionStartX = _useState20[0],
159
+ setSelectionStartX = _useState20[1];
160
+
161
+ var _useState21 = (0, _react.useState)(null),
162
+ _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
163
+ selectionEndX = _useState22[0],
164
+ setSelectionEndX = _useState22[1]; // SELECTION MANAGEMENT FUNCTIONS | END //
165
+ // SERVICE WATCHERS MANAGEMENT FUNCTIONS | START //
166
+
167
+
168
+ var _useState23 = (0, _react.useState)([]),
169
+ _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
170
+ serviceWatchers = _useState24[0],
171
+ setServiceWatchers = _useState24[1];
172
+
173
+ var pushServiceWatcher = function pushServiceWatcher(fn) {
174
+ return setServiceWatchers(function (state) {
175
+ return [].concat((0, _toConsumableArray2.default)(state), [{
176
+ fn: fn,
177
+ dt: Date.now()
178
+ }]);
179
+ });
180
+ };
181
+
182
+ var popServiceWatcher = function popServiceWatcher() {
183
+ var _serviceWatchers = (0, _toArray2.default)(serviceWatchers),
184
+ poped = _serviceWatchers[0],
185
+ rest = _serviceWatchers.slice(1);
186
+
187
+ setServiceWatchers(rest);
188
+ return poped.fn || _functions.voidFn;
189
+ };
190
+
191
+ var serviceWatchersWorker = function serviceWatchersWorker() {
192
+ popServiceWatcher()();
193
+ };
194
+
195
+ (0, _react.useEffect)(function () {
196
+ if (!serviceWatchers.length) return false;
197
+ serviceWatchersWorker();
198
+ }, [serviceWatchers]); // SERVICE WATCHERS MANAGEMENT FUNCTIONS | END //
199
+ // INNER VALUE MANAGEMENT FUNCTIONS | START //
200
+
201
+ var _useState25 = (0, _react.useState)([]),
202
+ _useState26 = (0, _slicedToArray2.default)(_useState25, 2),
203
+ innerValue = _useState26[0],
204
+ setInnerValue = _useState26[1];
168
205
 
169
206
  var addInnerValueChar = function addInnerValueChar(_ref2) {
170
207
  var char = _ref2.char,
@@ -195,6 +232,7 @@ function InputMask() {
195
232
 
196
233
  var i = arguments.length > 1 ? arguments[1] : undefined;
197
234
  setInnerValue(function (state) {
235
+ if (!state[i]) return state;
198
236
  var stateCopy = (0, _toConsumableArray2.default)(state);
199
237
  if (!stateCopy[i].isSpecialSymbol && char !== null) stateCopy[i].char = char;
200
238
  if (isSelected !== null) stateCopy[i].isSelected = isSelected;
@@ -209,96 +247,20 @@ function InputMask() {
209
247
  isSelected: false
210
248
  }, i);
211
249
  });
212
- };
213
-
214
- var getPlaceholderCharByIndex = function getPlaceholderCharByIndex(i) {
215
- var _getCharByIndex = getCharByIndex(i),
216
- maskChar = _getCharByIndex.maskChar;
217
-
218
- if (usePatternPlaceholder) {
219
- return maskPatternPlaceholder[i] || maskPlaceholder;
220
- } else {
221
- if (isDigitMaskChar(maskChar) && maskDigitPlaceholder) return maskDigitPlaceholder;
222
- if (isLetterMaskChar(maskChar) && maskLetterPlaceholder) return maskLetterPlaceholder;
223
- return maskPlaceholder;
224
- }
225
- };
250
+ }; // INNER VALUE MANAGEMENT FUNCTIONS | END //
251
+ // CHECKERS | START //
226
252
 
227
- var getInnerValueAsString = function getInnerValueAsString() {
228
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
229
- _ref4$replaceSpace = _ref4.replaceSpace,
230
- replaceSpace = _ref4$replaceSpace === void 0 ? false : _ref4$replaceSpace;
231
-
232
- var result = innerValue.slice(0, innerValue.length - 1).map(function (_ref5, i) {
233
- var char = _ref5.char,
234
- maskChar = _ref5.maskChar;
235
- return char === '' ? getPlaceholderCharByIndex(i) || maskChar : char;
236
- }).join('');
237
- return replaceSpace ? result.replace(/\u00A0/g, ' ') : result;
238
- };
239
-
240
- var getSelectedValueAsString = function getSelectedValueAsString() {
241
- return selectedText;
242
- };
243
-
244
- var getClearInnerValueAsString = function getClearInnerValueAsString() {
245
- return innerValue.reduce(function (result, _ref6) {
246
- var char = _ref6.char,
247
- maskChar = _ref6.maskChar,
248
- isSpecialSymbol = _ref6.isSpecialSymbol;
249
- if (char !== maskChar && char !== '' || isSpecialSymbol) result += char;
250
- return result;
251
- }, '');
252
- };
253
253
 
254
- var getLastTypedIndex = function getLastTypedIndex() {
255
- return innerValue.reduce(function (lastIndex, _ref7, i) {
256
- var char = _ref7.char,
257
- isSpecialSymbol = _ref7.isSpecialSymbol;
258
- if (!isSpecialSymbol && char !== SPACE_CHAR && char !== '' || lastIndex === null) lastIndex = i;
259
- return lastIndex;
260
- }, -1) + 1;
261
- };
262
-
263
- var isLetter = function isLetter(char) {
264
- return (char === null || char === void 0 ? void 0 : char.length) === 1 && (char === null || char === void 0 ? void 0 : char.match(/[a-z]/i));
265
- };
266
-
267
- var isUpperCaseLetter = function isUpperCaseLetter(char) {
268
- return isLetter(char) ? char === char.slice().toUpperCase() : false;
269
- };
270
-
271
- var isLowerCaseLetter = function isLowerCaseLetter(char) {
272
- return isLetter(char) ? char === char.slice().toLowerCase() : false;
273
- };
274
-
275
- var isDigit = function isDigit(char) {
276
- return Number.isInteger(parseInt(char));
277
- };
278
-
279
- var isDigitMaskChar = function isDigitMaskChar(char) {
280
- return char === DIGIT_MASK_CHAR;
281
- };
282
-
283
- var isLetterMaskChar = function isLetterMaskChar(char) {
284
- return char === UPPERCASE_LETTER_MASK_CHAR || char === LOWERCASE_LETTER_MASK_CHAR;
285
- };
286
-
287
- var isSpecialSymbolMaskChar = function isSpecialSymbolMaskChar(_ref8) {
288
- var char = _ref8.char;
289
- return !isDigitMaskChar(char) && !isLetterMaskChar(char);
290
- };
291
-
292
- var isValidChar = function isValidChar(_ref9) {
293
- var key = _ref9.char,
294
- i = _ref9.i,
295
- _ref9$disableErrors = _ref9.disableErrors,
296
- disableErrors = _ref9$disableErrors === void 0 ? false : _ref9$disableErrors;
254
+ var isValidChar = function isValidChar(_ref4) {
255
+ var key = _ref4.char,
256
+ i = _ref4.i,
257
+ _ref4$disableErrors = _ref4.disableErrors,
258
+ disableErrors = _ref4$disableErrors === void 0 ? false : _ref4$disableErrors;
297
259
  var maskChar = getMaskCharByIndex(i);
298
260
 
299
261
  switch (maskChar) {
300
- case DIGIT_MASK_CHAR:
301
- if (!isDigit(key)) {
262
+ case _config.DIGIT_MASK_CHAR:
263
+ if (!(0, _functions.isDigit)(key)) {
302
264
  if (!disableErrors) {
303
265
  setErrorMessage(errors.onlyDigit);
304
266
  }
@@ -308,30 +270,30 @@ function InputMask() {
308
270
 
309
271
  break;
310
272
 
311
- case UPPERCASE_LETTER_MASK_CHAR:
273
+ case _config.UPPERCASE_LETTER_MASK_CHAR:
312
274
  if (adaptTextCase) key = key.toUpperCase();
313
275
 
314
- if (!isLetter(key) && !isCaseSensitive) {
276
+ if (!(0, _functions.isLetter)(key) && !isCaseSensitive) {
315
277
  if (!disableErrors) setErrorMessage(errors.onlyLetter);
316
278
  return false;
317
279
  }
318
280
 
319
- if (isCaseSensitive && !isUpperCaseLetter(key)) {
281
+ if (isCaseSensitive && !(0, _functions.isUpperCaseLetter)(key)) {
320
282
  if (!disableErrors) setErrorMessage(errors.onlyUpperCase);
321
283
  return false;
322
284
  }
323
285
 
324
286
  break;
325
287
 
326
- case LOWERCASE_LETTER_MASK_CHAR:
288
+ case _config.LOWERCASE_LETTER_MASK_CHAR:
327
289
  if (adaptTextCase) key = key.toLowerCase();
328
290
 
329
- if (!isLetter(key) && !isCaseSensitive) {
291
+ if (!(0, _functions.isLetter)(key) && !isCaseSensitive) {
330
292
  if (!disableErrors) setErrorMessage(errors.onlyLetter);
331
293
  return false;
332
294
  }
333
295
 
334
- if (isCaseSensitive && !isLowerCaseLetter(key)) {
296
+ if (isCaseSensitive && !(0, _functions.isLowerCaseLetter)(key)) {
335
297
  if (!disableErrors) setErrorMessage(errors.onlyLowerCase);
336
298
  return false;
337
299
  }
@@ -340,23 +302,24 @@ function InputMask() {
340
302
 
341
303
  default:
342
304
  return false;
343
- break;
344
305
  }
345
306
 
346
307
  return true;
347
308
  };
348
309
 
349
- var isSpecialSymbolChar = function isSpecialSymbolChar(_ref10) {
350
- var char = _ref10.char;
351
- return !isDigit(char) && !isLetter(char);
352
- };
310
+ var isSpecialSymbolChar = function isSpecialSymbolChar(_ref5) {
311
+ var char = _ref5.char;
312
+ return !(0, _functions.isDigit)(char) && !(0, _functions.isLetter)(char);
313
+ }; // CHECKERS | END //
314
+ // GETTERS | START //
315
+
353
316
 
354
317
  var getCharObj = function getCharObj(char) {
355
318
  var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
356
319
  var isSpecialSymbol = isSpecialSymbolChar({
357
320
  char: char
358
321
  });
359
- if (char === ' ') char = SPACE_CHAR;
322
+ if (char === ' ') char = _config.SPACE_CHAR;
360
323
  return _objectSpread({
361
324
  char: isSpecialSymbol ? char : '',
362
325
  maskChar: char,
@@ -366,14 +329,6 @@ function InputMask() {
366
329
  }, data);
367
330
  };
368
331
 
369
- var getFirstChar = function getFirstChar() {
370
- return innerValue[0] ? _objectSpread({}, innerValue[0]) : undefined;
371
- };
372
-
373
- var getLastChar = function getLastChar() {
374
- return innerValue.length ? (0, _toConsumableArray2.default)(innerValue).pop() : undefined;
375
- };
376
-
377
332
  var getCharByIndex = function getCharByIndex(i) {
378
333
  return innerValue[i] ? _objectSpread({}, innerValue[i]) : undefined;
379
334
  };
@@ -385,19 +340,98 @@ function InputMask() {
385
340
  };
386
341
 
387
342
  var getSelectStartIndex = function getSelectStartIndex() {
388
- var sel = (0, _functions.getSelectionText)();
389
- var str = getInnerValueAsString();
390
- return str.indexOf(sel);
343
+ if (selectionStartX === selectionEndX) return 0;
344
+ var minX = selectionStartX < selectionEndX ? selectionStartX : selectionEndX;
345
+ var maxX = selectionStartX > selectionEndX ? selectionStartX : selectionEndX;
346
+
347
+ var _innerValue$reduce = innerValue.reduce(function (resObj, _ref6, index) {
348
+ var _ref$current;
349
+
350
+ var char = _ref6.char,
351
+ ref = _ref6.ref;
352
+ if ((ref === null || ref === void 0 ? void 0 : ref.current) === null) return resObj;
353
+
354
+ var _ref$current$getBound = ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect(),
355
+ charX = _ref$current$getBound.left,
356
+ charWidth = _ref$current$getBound.width;
357
+
358
+ var charCenterX = charX + charWidth / 2; // If Char X-Coord Out Of Range
359
+
360
+ // If Char X-Coord Out Of Range
361
+ if (!charX || minX > charCenterX || maxX < charCenterX) return resObj;
362
+ if (resObj.index === null || minX <= charCenterX && charCenterX >= maxX && charCenterX < resObj.charX) return {
363
+ index: index,
364
+ charX: charCenterX
365
+ };
366
+ return resObj;
367
+ }, {
368
+ index: null,
369
+ charX: null
370
+ }),
371
+ index = _innerValue$reduce.index;
372
+
373
+ return index;
391
374
  };
392
375
 
376
+ var getPlaceholderCharByIndex = function getPlaceholderCharByIndex(i) {
377
+ var _getCharByIndex = getCharByIndex(i),
378
+ maskChar = _getCharByIndex.maskChar;
379
+
380
+ if (usePatternPlaceholder) {
381
+ return maskPatternPlaceholder[i] || maskPlaceholder;
382
+ } else {
383
+ if ((0, _functions.isDigitMaskChar)(maskChar) && maskDigitPlaceholder) return maskDigitPlaceholder;
384
+ if ((0, _functions.isLetterMaskChar)(maskChar) && maskLetterPlaceholder) return maskLetterPlaceholder;
385
+ return maskPlaceholder;
386
+ }
387
+ };
388
+
389
+ var getInnerValueAsString = function getInnerValueAsString() {
390
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
391
+ _ref7$replaceSpace = _ref7.replaceSpace,
392
+ replaceSpace = _ref7$replaceSpace === void 0 ? false : _ref7$replaceSpace;
393
+
394
+ var result = innerValue.slice(0, innerValue.length - 1).map(function (_ref8, i) {
395
+ var char = _ref8.char,
396
+ maskChar = _ref8.maskChar;
397
+ return char === '' ? getPlaceholderCharByIndex(i) || maskChar : char;
398
+ }).join('');
399
+ return replaceSpace ? result.replace(/\u00A0/g, ' ') : result;
400
+ };
401
+
402
+ var getClearInnerValueAsString = function getClearInnerValueAsString() {
403
+ var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
404
+ return innerValue.filter(function (charObj, i) {
405
+ return i >= start;
406
+ }).filter(function (_ref9) {
407
+ var isSpecialSymbol = _ref9.isSpecialSymbol;
408
+ return !isSpecialSymbol;
409
+ }).reduce(function (result, _ref10) {
410
+ var char = _ref10.char,
411
+ maskChar = _ref10.maskChar,
412
+ isSpecialSymbol = _ref10.isSpecialSymbol;
413
+ if (char !== maskChar && char !== '' || isSpecialSymbol) result += char;
414
+ return result;
415
+ }, '');
416
+ };
417
+
418
+ var getLastTypedIndex = function getLastTypedIndex() {
419
+ return innerValue.reduce(function (lastIndex, _ref11, i) {
420
+ var char = _ref11.char,
421
+ isSpecialSymbol = _ref11.isSpecialSymbol;
422
+ if (!isSpecialSymbol && char !== _config.SPACE_CHAR && char !== '' || lastIndex === null) lastIndex = i;
423
+ return lastIndex;
424
+ }, -1) + 1;
425
+ }; // GETTERS | END //
426
+ // SETTERS | START //
427
+
428
+
393
429
  var setFocusOnChar = function setFocusOnChar(i, prevIndex) {
394
- var _ref$current;
430
+ var _ref$current2;
395
431
 
396
432
  var charObj = getCharByIndex(i);
397
433
  if (!charObj) return false;
398
- var char = charObj.char,
399
- maskChar = charObj.maskChar,
400
- ref = charObj.ref,
434
+ var ref = charObj.ref,
401
435
  isSpecialSymbol = charObj.isSpecialSymbol;
402
436
  if (!ref) return false;
403
437
 
@@ -405,27 +439,14 @@ function InputMask() {
405
439
  return prevIndex > i ? onArrowLeftDown(null, i) : onArrowRightDown(null, i);
406
440
  }
407
441
 
408
- (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
442
+ (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.focus();
409
443
  setTimeout(function () {
410
444
  return (0, _InputCarretPosition.setCaretPosition)(ref.current, 0);
411
445
  }, 10);
412
- setFocusedItemRef(ref);
413
-
414
- _onFocus(null, i);
415
-
416
446
  return true;
417
- };
418
-
419
- var clearValue = function clearValue(e) {
420
- e.stopPropagation();
421
- e.preventDefault();
422
- innerValue.map(function (charObj, i) {
423
- updateInnerValueChar({
424
- char: ''
425
- }, i);
426
- });
427
- onHomeDown(null, 0);
428
- }; ///--- Event Handlers ---///
447
+ }; // SETTERS | END //
448
+ ///--- Event Handlers ---///
449
+ // SERVICE KEYS HANDLERS | START //
429
450
 
430
451
 
431
452
  var onArrowLeftDown = function onArrowLeftDown(e, i) {
@@ -433,32 +454,18 @@ function InputMask() {
433
454
  };
434
455
 
435
456
  var onArrowRightDown = function onArrowRightDown(e, i) {
436
- var key = (e === null || e === void 0 ? void 0 : e.key) || null;
437
- var nextIndex = i + 1;
438
- if (maskAsPlaceholder && nextIndex > getLastTypedIndex() && key === 'ArrowRight') nextIndex = getLastTypedIndex();
439
- setFocusOnChar(nextIndex, i);
457
+ var key = (e === null || e === void 0 ? void 0 : e.key) || null; // If Current Index Equals LastTyped Index in MaskAsPlaceholder Mode
458
+
459
+ if (maskAsPlaceholder && i === getLastTypedIndex() && key === 'ArrowRight') return false;
460
+ return setFocusOnChar(i + 1, i);
440
461
  };
441
462
 
442
463
  var onBackspaceDown = function onBackspaceDown(e, i) {
443
- // if (Boolean(getSelectionText().length)) {
444
- // const selStartInd = getSelectStartIndex();
445
- // const selEndInd = getSelectionText().length+selStartInd;
446
- // console.log(selStartInd, selEndInd)
447
- // if (selStartInd > 0) {
448
- // resetSelectionText();
449
- // for (let index = selStartInd; index < selEndInd; ++index) {
450
- // console.log({index})
451
- // updateInnerValueChar({char: ''}, index);
452
- // }
453
- // setFocusOnChar(selStartInd, i);
454
- // }
455
- // return true;
456
- // }
464
+ if ((0, _functions.getSelectionText)().length) return deleteSelectedText();
457
465
  var prevIndex = i - 1;
458
466
  var charObj = getCharByIndex(prevIndex);
459
467
  if (!charObj) return false;
460
- var char = charObj.char,
461
- isSpecialSymbol = charObj.isSpecialSymbol;
468
+ var isSpecialSymbol = charObj.isSpecialSymbol;
462
469
  if (isSpecialSymbol) return onBackspaceDown(e, prevIndex);
463
470
 
464
471
  if (maskAsPlaceholder) {
@@ -479,12 +486,14 @@ function InputMask() {
479
486
  };
480
487
 
481
488
  var onDeleteDown = function onDeleteDown(e, i) {
489
+ if ((0, _functions.getSelectionText)().length) return deleteSelectedText();
482
490
  var nextIndex = i + 1;
483
491
  var charObj = getCharByIndex(i);
484
492
  if (!charObj) return false;
485
493
  var char = charObj.char,
486
494
  isSpecialSymbol = charObj.isSpecialSymbol;
487
495
  if (isSpecialSymbol) return onDeleteDown(e, i + 1);
496
+ if (char === '') return false;
488
497
 
489
498
  if (maskAsPlaceholder) {
490
499
  var newText = getInnerValueAsString().substr(0, i) + getInnerValueAsString().substr(nextIndex);
@@ -510,8 +519,12 @@ function InputMask() {
510
519
  };
511
520
 
512
521
  var onEndDown = function onEndDown(e, i) {
513
- return setFocusOnChar(maskAsPlaceholder ? getLastTypedIndex() : innerValue.length - 1, 0);
514
- };
522
+ return setTimeout(function () {
523
+ return setFocusOnChar(maskAsPlaceholder ? getLastTypedIndex() : 0, 0);
524
+ }, 10);
525
+ }; // SERVICE KEYS HANDLERS | END //
526
+ // GENERAL EVENT HANDLERS | START //
527
+
515
528
 
516
529
  var handleServiceKeyDown = function handleServiceKeyDown(e, i) {
517
530
  var key = e.key;
@@ -548,9 +561,11 @@ function InputMask() {
548
561
  };
549
562
 
550
563
  var handleKeyDown = function handleKeyDown(e, i) {
551
- var _ref11 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
552
- _ref11$disableErrors = _ref11.disableErrors,
553
- disableErrors = _ref11$disableErrors === void 0 ? false : _ref11$disableErrors;
564
+ var _getClearInnerValueAs;
565
+
566
+ var _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
567
+ _ref12$disableErrors = _ref12.disableErrors,
568
+ disableErrors = _ref12$disableErrors === void 0 ? false : _ref12$disableErrors;
554
569
 
555
570
  try {
556
571
  e.stopPropagation();
@@ -559,17 +574,37 @@ function InputMask() {
559
574
 
560
575
  var key = e.key;
561
576
  var charObj = getCharByIndex(i);
562
- if (!charObj) return false;
577
+ if (!charObj || i === innerValue.length - 1) return false;
578
+ if (maskAsPlaceholder && i > getLastTypedIndex() + 1) return handleKeyDown(e, getLastTypedIndex() === 0 ? 0 : getLastTypedIndex() + 1, {
579
+ disableErrors: disableErrors
580
+ });
563
581
  var isSpecialSymbol = charObj.isSpecialSymbol,
564
- maskChar = charObj.maskChar; //IF DEFAULT CHAR IS SPACE, SWITCH TO NEXT INPUT
582
+ maskChar = charObj.maskChar,
583
+ isReadOnly = charObj.isReadOnly;
584
+ if (isReadOnly) return false; //IF DEFAULT CHAR IS SPACE, SWITCH TO NEXT INPUT
565
585
 
566
- if (maskChar === SPACE_CHAR) return handleKeyDown(e, i + 1);
586
+ if (maskChar === _config.SPACE_CHAR) return handleKeyDown(e, i + 1);
567
587
  if (isSpecialSymbol && maskChar !== key) return false;
568
588
  if (!isValidChar({
569
589
  char: key,
570
590
  i: i,
571
591
  disableErrors: disableErrors
572
592
  })) return false;
593
+
594
+ if (maskAsPlaceholder && ((_getClearInnerValueAs = getClearInnerValueAsString(i)) === null || _getClearInnerValueAs === void 0 ? void 0 : _getClearInnerValueAs.length) !== 0) {
595
+ var fromIndex = i + 1;
596
+ var text = innerValue.slice().filter(function (charObj, index) {
597
+ return index >= i;
598
+ }).map(function (_ref13, index) {
599
+ var char = _ref13.char;
600
+ return char;
601
+ }).join('');
602
+
603
+ _onPaste({
604
+ text: text
605
+ }, fromIndex, false);
606
+ }
607
+
573
608
  updateInnerValueChar({
574
609
  char: key
575
610
  }, i);
@@ -589,33 +624,41 @@ function InputMask() {
589
624
  }
590
625
  };
591
626
 
592
- var _onKeyDown = function onKeyDown(e, i) {
627
+ var _onKeyDown = function onKeyDown(e) {
628
+ var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
629
+ if (!isFocused) return false;
593
630
  var key = e.key,
594
631
  ctrlKey = e.ctrlKey,
595
632
  altKey = e.altKey;
633
+ if (_indexConstants.KEYBOARD_SERVICE_KEYS.includes(key) && _config.EXCLUDED_KEYS.includes(key)) return true;
596
634
  setError(false);
597
635
  clearErrorMessage();
598
636
 
599
637
  if (ctrlKey || altKey) {
600
- if (!_index.KEYBOARD_SERVICE_KEYS.includes(key)) handleKeyCombinations(e, i);
638
+ if (!_indexConstants.KEYBOARD_SERVICE_KEYS.includes(key)) handleKeyCombinations(e, i);
601
639
  return true;
602
640
  }
603
641
 
604
- var handleResult = _index.KEYBOARD_SERVICE_KEYS.includes(key) ? handleServiceKeyDown(e, i) : handleKeyDown(e, i);
642
+ e.preventDefault();
643
+ e.stopPropagation();
644
+ var handleResult = _indexConstants.KEYBOARD_SERVICE_KEYS.includes(key) ? handleServiceKeyDown(e, i) : handleKeyDown(e, i);
605
645
 
606
- if (blinkErrors && !handleResult) {
646
+ if (blinkErrors && !handleResult && i !== null) {
607
647
  setBlinkError(true);
608
648
  }
609
649
  };
610
650
 
611
651
  var onClick = function onClick(e, cb) {
612
- var _ref12 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
613
- _ref12$ignoreIsSelect = _ref12.ignoreIsSelecting,
614
- ignoreIsSelecting = _ref12$ignoreIsSelect === void 0 ? false : _ref12$ignoreIsSelect;
652
+ var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
653
+ _ref14$ignoreIsSelect = _ref14.ignoreIsSelecting,
654
+ ignoreIsSelecting = _ref14$ignoreIsSelect === void 0 ? false : _ref14$ignoreIsSelect;
615
655
 
616
- e.stopPropagation();
617
- e.preventDefault();
618
- if (isSelecting && (Boolean(selectedText.length) || Boolean((0, _functions.getSelectionText)().length)) && !ignoreIsSelecting) return false;
656
+ try {
657
+ e.stopPropagation();
658
+ e.preventDefault();
659
+ } catch (error) {}
660
+
661
+ if (isSelecting && (selectedText.length || (0, _functions.getSelectionText)().length) && !ignoreIsSelecting) return false;
619
662
  setFocused(true);
620
663
  if (typeof cb === 'function') cb(e);
621
664
  };
@@ -637,7 +680,7 @@ function InputMask() {
637
680
  (0, _functions.resetSelectionText)();
638
681
  setTimeout(function () {
639
682
  return onClick(e, function () {
640
- return _onFocus(e, i);
683
+ return setFocusOnChar(i, 0);
641
684
  }, {
642
685
  ignoreIsSelecting: true
643
686
  });
@@ -645,11 +688,28 @@ function InputMask() {
645
688
  };
646
689
 
647
690
  var onWrapperClick = function onWrapperClick(e) {
648
- return cancelDefaultAction(e, function () {
649
- !isMouseDown ? onClick(e, function () {
650
- return onEndDown(e, 0);
651
- }) : null;
652
- });
691
+ e.stopPropagation();
692
+ e.preventDefault();
693
+
694
+ if (!isMouseDown && !isSelecting) {
695
+ onClick(e);
696
+ setFocusOnChar(getLastTypedIndex(), 0);
697
+ }
698
+ };
699
+
700
+ var onClearClick = function onClearClick(e) {
701
+ e.stopPropagation();
702
+ e.preventDefault();
703
+ resetInnerValue();
704
+ onHomeDown(null, 0);
705
+ };
706
+
707
+ var onMouseDownMove = function onMouseDownMove(e) {
708
+ if (!isMouseDown) return false;
709
+ setIsSelecting(true);
710
+ var clientX = e.clientX;
711
+ if (selectionStartX === null) setSelectionStartX(clientX);
712
+ setSelectionEndX(clientX);
653
713
  };
654
714
 
655
715
  var onBlur = function onBlur(e) {
@@ -675,21 +735,37 @@ function InputMask() {
675
735
  };
676
736
 
677
737
  var _onPaste = function onPaste(e, i) {
678
- var _e$clipboardData;
738
+ var _ref15, _window, _e$clipboardData;
679
739
 
680
- setIsSelecting(false);
681
- (0, _functions.resetSelectionText)();
740
+ var setFocusToEnd = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
682
741
 
683
742
  try {
684
- e.preventDefault();
685
743
  e.stopPropagation();
744
+ e.preventDefault();
686
745
  } catch (error) {}
687
746
 
688
- var pastedText = (e === null || e === void 0 ? void 0 : (_e$clipboardData = e.clipboardData) === null || _e$clipboardData === void 0 ? void 0 : _e$clipboardData.getData('Text')) || e.text;
747
+ setIsSelecting(false);
748
+ (0, _functions.resetSelectionText)();
749
+ var pastedText = ((_ref15 = (e === null || e === void 0 ? void 0 : e.clipboardData) || ((_window = window) === null || _window === void 0 ? void 0 : _window.clipboardData)) === null || _ref15 === void 0 ? void 0 : _ref15.getData('text/plain')) || (e === null || e === void 0 ? void 0 : (_e$clipboardData = e.clipboardData) === null || _e$clipboardData === void 0 ? void 0 : _e$clipboardData.getData('Text')) || e.text;
689
750
  if (!pastedText) return false;
690
751
  var replacedIndexes = [];
691
- var result = pastedText.split('').filter(function (char) {
692
- return isDigit(char) || isLetter(char);
752
+
753
+ if (maskAsPlaceholder && (e === null || e === void 0 ? void 0 : e.type) === 'paste') {
754
+ var fromIndex = i + parseInt(pastedText === null || pastedText === void 0 ? void 0 : pastedText.length);
755
+ var text = innerValue.slice().filter(function (charObj, index) {
756
+ return index >= i;
757
+ }).map(function (_ref16, index) {
758
+ var char = _ref16.char;
759
+ return char;
760
+ }).join('');
761
+
762
+ _onPaste({
763
+ text: text
764
+ }, fromIndex, false);
765
+ }
766
+
767
+ pastedText.split('').filter(function (char) {
768
+ return (0, _functions.isDigit)(char) || (0, _functions.isLetter)(char);
693
769
  }).map(function (pastedChar, offset) {
694
770
  var charIndex = i + offset;
695
771
  var isReplaced = false;
@@ -742,26 +818,39 @@ function InputMask() {
742
818
  _replacedIndexes$reve2 = (0, _slicedToArray2.default)(_replacedIndexes$reve, 1),
743
819
  lastCharIndex = _replacedIndexes$reve2[0];
744
820
 
745
- setFocusOnChar(lastCharIndex + 1, i);
821
+ if (setFocusToEnd) setFocusOnChar(lastCharIndex + 1, i);
822
+ return lastCharIndex;
746
823
  };
747
824
 
748
825
  var _onCopy = function onCopy(e, i) {
826
+ try {
827
+ e.stopPropagation();
828
+ e.preventDefault();
829
+ } catch (error) {}
830
+
749
831
  (0, _functions.copyToClipboard)((0, _functions.getSelectionText)());
750
832
  setIsSelecting(false);
751
833
  setFocusOnChar(i, 0);
752
834
  };
753
835
 
754
836
  var _onCut = function onCut(e, i) {
837
+ try {
838
+ e.stopPropagation();
839
+ e.preventDefault();
840
+ } catch (error) {}
841
+
755
842
  (0, _functions.copyToClipboard)((0, _functions.getSelectionText)());
756
- resetInnerValue();
843
+ deleteSelectedText();
757
844
  setIsSelecting(false);
758
845
  setFocusOnChar(i, 0);
759
- };
846
+ }; // GENERAL EVENT HANDLERS | END //
847
+ // FUNCTIONS | START //
848
+
760
849
 
761
850
  var cancelDefaultAction = function cancelDefaultAction(e, cb) {
762
851
  var key = e.key;
763
852
 
764
- if (!EXCLUDED_KEYS.includes(key) && _index.KEYBOARD_SERVICE_KEYS.includes(key)) {
853
+ if (!_config.EXCLUDED_KEYS.includes(key) && _indexConstants.KEYBOARD_SERVICE_KEYS.includes(key)) {
765
854
  e.preventDefault();
766
855
  e.stopPropagation();
767
856
  }
@@ -774,30 +863,74 @@ function InputMask() {
774
863
  e.preventDefault();
775
864
  e.stopPropagation();
776
865
  setIsSelecting(true);
866
+ setSelectionStartX(-1);
867
+ setSelectionEndX(-1);
777
868
  (0, _functions.selectElementContents)(inputRef.current);
778
869
  setSelectedText((0, _functions.getSelectionText)());
779
- }; ///--- OBSERVERS ---///
870
+ };
871
+
872
+ var deleteSelectedText = function deleteSelectedText() {
873
+ var _getClearInnerValueAs2;
874
+
875
+ var selStartInd = getSelectStartIndex();
876
+ if (selStartInd === null || selStartInd === undefined || selStartInd < 0) return false;
877
+ var selEndInd = (0, _functions.getSelectionText)().length + selStartInd;
878
+ var filteredSelLen = (0, _functions.getSelectionText)().split('').reduce(function (counter, char) {
879
+ if (!isSpecialSymbolChar(char)) counter += 1;
880
+ return counter;
881
+ }, 0);
882
+ (0, _functions.resetSelectionText)();
883
+
884
+ if (maskAsPlaceholder && ((_getClearInnerValueAs2 = getClearInnerValueAsString(selEndInd + 1)) === null || _getClearInnerValueAs2 === void 0 ? void 0 : _getClearInnerValueAs2.length) !== 0) {
885
+ var text = innerValue.slice().filter(function (_ref17, index) {
886
+ var isSpecialSymbol = _ref17.isSpecialSymbol;
887
+ return (index < selStartInd || index >= selEndInd) && !isSpecialSymbol;
888
+ }).map(function (_ref18, index) {
889
+ var char = _ref18.char;
890
+ return char;
891
+ }).join('');
892
+ resetInnerValue();
893
+
894
+ _onPaste({
895
+ text: text
896
+ }, 0, false);
897
+
898
+ setFocusOnChar(selStartInd);
899
+ } else {
900
+ for (var index = selStartInd; index < selEndInd; ++index) {
901
+ updateInnerValueChar({
902
+ char: ''
903
+ }, index);
904
+ }
905
+ }
906
+
907
+ setFocusOnChar(selStartInd, -1);
908
+ return true;
909
+ }; // FUNCTIONS | END //
910
+ ///--- OBSERVERS ---///
780
911
  //Render Mask
781
912
 
782
913
 
783
914
  (0, _react.useEffect)(function () {
784
915
  if (!maskPattern) maskPattern = '';
785
- maskPattern.concat(' ').split('').map(function (char, id) {
916
+ maskPattern.concat(' ').split('').map(function (char, id, i) {
786
917
  return addInnerValueChar({
787
- char: char
788
- }, {
789
- id: id
918
+ char: char,
919
+ data: {
920
+ id: id,
921
+ isReadOnly: id === maskPattern.length
922
+ }
790
923
  });
791
924
  });
792
925
  setMaskRendered(true);
793
926
  }, []);
794
927
  (0, _react.useEffect)(function () {
795
- if (!isMaskRendered) return false;
928
+ if (!isMaskRendered || isInitValue) return false;
796
929
 
797
- if (value && value !== '') {
930
+ if (value && value !== '' && value !== getClearInnerValueAsString()) {
798
931
  var valueCharIndex = 0;
799
- innerValue.map(function (_ref13, i) {
800
- var isSpecialSymbol = _ref13.isSpecialSymbol;
932
+ innerValue.map(function (_ref19, i) {
933
+ var isSpecialSymbol = _ref19.isSpecialSymbol;
801
934
  if (isSpecialSymbol) return false;
802
935
  var char = value[valueCharIndex];
803
936
 
@@ -820,12 +953,12 @@ function InputMask() {
820
953
 
821
954
  ++valueCharIndex;
822
955
  });
956
+ setIsInitValue(true);
823
957
  }
824
- }, [isMaskRendered]); // Focus Observer
958
+ }, [isMaskRendered, value, isInitValue]); // Focus Observer
825
959
 
826
960
  (0, _react.useEffect)(function () {
827
961
  if (!isFocused) {
828
- setFocusedItemRef(null);
829
962
  setSelectedText('');
830
963
  }
831
964
  }, [isFocused]); // Default Focused
@@ -840,9 +973,9 @@ function InputMask() {
840
973
  if (!isMaskRendered) return false;
841
974
  setError(false);
842
975
  clearErrorMessage();
843
- onChangeProp(getInnerValueAsString({
976
+ onChangeProp(getClearInnerValueAsString(), getInnerValueAsString({
844
977
  replaceSpace: true
845
- }), getClearInnerValueAsString());
978
+ }));
846
979
  }, [innerValue, isMaskRendered]); // Blink Error
847
980
 
848
981
  (0, _react.useEffect)(function () {
@@ -855,14 +988,32 @@ function InputMask() {
855
988
  if (!isSelecting) {
856
989
  setSelectedText('');
857
990
  (0, _functions.resetSelectionText)();
991
+ setSelectionStartX(null);
992
+ setSelectionEndX(null);
993
+ }
994
+
995
+ if (!isMouseDown && isSelecting) {
996
+ document.addEventListener('keydown', function (e) {
997
+ return pushServiceWatcher(function () {
998
+ _onKeyDown(e);
999
+
1000
+ setIsSelecting(false);
1001
+ });
1002
+ }, {
1003
+ once: true
1004
+ });
858
1005
  }
859
1006
 
860
- if (!isMouseDown && isSelecting && !Boolean((0, _functions.getSelectionText)().length)) setIsSelecting(false);
1007
+ if (!isMouseDown && isSelecting && !(0, _functions.getSelectionText)().length) setIsSelecting(false);
861
1008
  }, [isSelecting, isMouseDown]);
862
1009
  (0, _react.useEffect)(function () {
863
1010
  document.addEventListener('mouseup', function () {
864
1011
  setIsMouseDown(function (isMouseDown) {
865
- document.addEventListener('keydown', _onKeyDown, {
1012
+ document.addEventListener('keydown', function (e) {
1013
+ return pushServiceWatcher(function () {
1014
+ return _onKeyDown(e);
1015
+ });
1016
+ }, {
866
1017
  once: true
867
1018
  });
868
1019
 
@@ -891,17 +1042,20 @@ function InputMask() {
891
1042
  maskChar = obj.maskChar,
892
1043
  isSpecialSymbol = obj.isSpecialSymbol,
893
1044
  isSelected = obj.isSelected;
1045
+ var prevChar = getCharByIndex(i - 1);
894
1046
  if (i === innerValue.length - 1 && isSelecting) return /*#__PURE__*/_react.default.createElement("span", {
895
1047
  style: {
896
1048
  width: '1px'
897
1049
  }
898
1050
  });
899
1051
  return /*#__PURE__*/_react.default.createElement("span", {
900
- tabIndex: i === 0 ? 'auto' : -1,
1052
+ tabIndex: i === 0 ? 0 : -1,
901
1053
  key: i,
902
1054
  maxLength: 1,
903
1055
  "attr-char-id": i,
904
- className: "\n input-mask_value_item\n ".concat(className, "\n ").concat(isDigitMaskChar(obj.maskChar) ? 'input-mask_value_item--digit' : '', "\n ").concat(isLetterMaskChar(obj.maskChar) ? 'input-mask_value_item--letter' : '', "\n ").concat(obj.isSpecialSymbol ? 'input-mask_value_item--spec' : '', "\n ").concat(isSelected ? 'input-mask_value_item--selected' : '', "\n "),
1056
+ className: "\n input-mask_value_item\n ".concat(className, "\n ").concat((0, _functions.isDigitMaskChar)(obj.maskChar) ? 'input-mask_value_item--digit' : '', "\n ").concat((0, _functions.isLetterMaskChar)(obj.maskChar) ? 'input-mask_value_item--letter' : '', "\n ").concat(obj.isSpecialSymbol ? 'input-mask_value_item--spec' : '', "\n ").concat(isSelected ? 'input-mask_value_item--selected' : '', "\n ") // ${char === '' || isSpecialSymbol ? 'unselectable' : ''}
1057
+ // ${!isSelecting && (char === '' || isSpecialSymbol) ? 'unselectable' : ''}
1058
+ ,
905
1059
  onClick: function onClick(e) {
906
1060
  return onCharClick(e, i);
907
1061
  },
@@ -915,30 +1069,31 @@ function InputMask() {
915
1069
  },
916
1070
  onChange: function onChange() {},
917
1071
  contentEditable: !isSelecting,
918
- inputMode: isDigitMaskChar(maskChar) ? 'numeric' : 'text',
1072
+ inputMode: (0, _functions.isDigitMaskChar)(i !== innerValue.length - 1 ? maskChar : prevChar === null || prevChar === void 0 ? void 0 : prevChar.maskChar) ? 'numeric' : 'text',
919
1073
  suppressContentEditableWarning: true,
920
1074
  onPaste: function onPaste(e) {
921
- return cancelDefaultAction(e, function () {
922
- return _onPaste(e, i);
923
- });
1075
+ return _onPaste(e, i);
924
1076
  },
925
1077
  onCopy: function onCopy(e) {
926
- return cancelDefaultAction(e, function () {
927
- return _onCopy(e, i);
928
- });
1078
+ return _onCopy(e, i);
929
1079
  },
930
1080
  onCut: function onCut(e) {
931
- return cancelDefaultAction(e, function () {
932
- return _onCut(e, i);
933
- });
1081
+ return _onCut(e, i);
934
1082
  },
935
- onSelect: cancelDefaultAction,
936
1083
  ref: ref,
937
1084
  onDoubleClick: function onDoubleClick(e) {
938
1085
  setIsSelecting(true);
939
1086
  setTimeout(function () {
940
1087
  return selectAllText(e, i);
941
1088
  }, 50);
1089
+ },
1090
+ onMouseDown: function onMouseDown(e) {
1091
+ return cancelDefaultAction(e, function () {
1092
+ return setIsMouseDown(true);
1093
+ });
1094
+ },
1095
+ onMouseMove: function onMouseMove(e) {
1096
+ return cancelDefaultAction(e, onMouseDownMove);
942
1097
  }
943
1098
  }, isSpecialSymbol ? maskChar : char === '' ? getPlaceholderCharByIndex(i) : char);
944
1099
  };
@@ -958,7 +1113,6 @@ function InputMask() {
958
1113
  var renderInputValue = function renderInputValue() {
959
1114
  return innerValue.map(function (obj, i) {
960
1115
  var char = obj.char,
961
- maskChar = obj.maskChar,
962
1116
  isSpecialSymbol = obj.isSpecialSymbol;
963
1117
 
964
1118
  if (isSpecialSymbol) {
@@ -977,16 +1131,18 @@ function InputMask() {
977
1131
  return /*#__PURE__*/_react.default.createElement("div", {
978
1132
  className: "\n input-mask_wrapper\n ".concat(className, "\n ").concat(isError ? 'input-mask_error' : '', "\n ").concat(isFocused ? 'input-mask_focus' : '', "\n ").concat(blinkError ? 'input-mask_blink-error' : '', "\n "),
979
1133
  onClick: onWrapperClick,
980
- onBlur: onBlur,
981
- tabIndex: "auto"
1134
+ onBlur: onBlur
982
1135
  }, /*#__PURE__*/_react.default.createElement("div", {
983
- className: "\n input-mask\n ".concat(isError ? 'input-mask_error' : '', "\n ").concat(isFocused ? 'input-mask_focus' : '', "\n ").concat(blinkError ? 'input-mask_blink-error' : '', "\n ") // onMouseDown={() => setIsMouseDown(true)}
984
- // onMouseUp={() => setIsMouseDown(false)}
985
- // onMouseMove={() => isMouseDown ? setIsSelecting(true) : null}
986
- ,
987
- onMouseDown: cancelDefaultAction,
1136
+ className: "\n input-mask\n ".concat(isError ? 'input-mask_error' : '', "\n ").concat(isFocused ? 'input-mask_focus' : '', "\n ").concat(blinkError ? 'input-mask_blink-error' : '', "\n "),
1137
+ onMouseDown: function onMouseDown(e) {
1138
+ return cancelDefaultAction(e, function () {
1139
+ return setIsMouseDown(true);
1140
+ });
1141
+ },
1142
+ onMouseMove: function onMouseMove(e) {
1143
+ return cancelDefaultAction(e, onMouseDownMove);
1144
+ },
988
1145
  onMouseUp: cancelDefaultAction,
989
- onMouseMove: cancelDefaultAction,
990
1146
  onClick: onWrapperClick,
991
1147
  onBlur: onBlur
992
1148
  }, showHint && isHintLeft && /*#__PURE__*/_react.default.createElement("div", {
@@ -1001,14 +1157,16 @@ function InputMask() {
1001
1157
  className: "input-mask_value",
1002
1158
  ref: inputRef,
1003
1159
  onKeyUp: cancelDefaultAction,
1004
- onKeyDown: cancelDefaultAction,
1160
+ onKeyDown: function onKeyDown(e) {
1161
+ return cancelDefaultAction(e, _onKeyDown);
1162
+ },
1005
1163
  onKeyPress: cancelDefaultAction,
1006
1164
  onBlur: onBlur,
1007
1165
  onClick: onWrapperClick
1008
1166
  }, renderInputValue()), isClearable && /*#__PURE__*/_react.default.createElement("div", {
1009
1167
  className: "input-mask_clear"
1010
1168
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
1011
- onClick: clearValue
1169
+ onClick: onClearClick
1012
1170
  })), isIconRight && showIcon && /*#__PURE__*/_react.default.createElement("div", {
1013
1171
  className: "input-mask_icon input-mask_icon--right"
1014
1172
  }, icon), showHint && isHintRight && /*#__PURE__*/_react.default.createElement("div", {
@@ -1,3 +1,13 @@
1
+ .unselectable {
2
+ -webkit-touch-callout: none; /* iOS Safari */
3
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
4
+ -khtml-user-select: none; /* Konqueror */
5
+ -moz-user-select: none; /* Firefox */
6
+ -ms-user-select: none; /* Internet Explorer/Edge */
7
+ user-select: none; /* Non-prefixed version, currently
8
+ not supported by any browser */
9
+ }
10
+
1
11
  .input-mask_wrapper{
2
12
  outline: none;
3
13
  display: block;
@@ -107,13 +117,11 @@
107
117
 
108
118
  &_mask-char{
109
119
  color: #9c9c9c;
110
- user-select: none;
111
120
  }
112
121
 
113
122
  &_value-char,
114
123
  &_spec-char{
115
124
  color: #333333;
116
- //user-select: all;
117
125
  }
118
126
 
119
127
  &_spec-char{
@@ -17,6 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _reactFeather = require("react-feather");
19
19
 
20
+ var _config = require("./config");
21
+
20
22
  var _InputMask = _interopRequireDefault(require("./InputMask"));
21
23
 
22
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -30,7 +32,7 @@ var _default = {
30
32
  argTypes: {
31
33
  maskPattern: {
32
34
  title: 'Mask Pattern',
33
- description: '<b>"D"</b> - Digit.<br/><b>"L"</b> or <b>"l"</b> - Letter.'
35
+ description: "<b>\"".concat(_config.DIGIT_MASK_CHAR, "\"</b> - Digit.<br/><b>\"").concat(_config.UPPERCASE_LETTER_MASK_CHAR, "\"</b> or <b>\"").concat(_config.LOWERCASE_LETTER_MASK_CHAR, "\"</b> - Letter.")
34
36
  },
35
37
  maskPatternPlaceholder: {
36
38
  title: 'Pattern Placeholder',
@@ -121,7 +123,9 @@ var _default = {
121
123
  },
122
124
  errors: {
123
125
  type: 'object',
124
- description: "Errors Descriptions: <br/>\n\n {\n onlyLetter: 'Type letter',\n onlyDigit: 'Type digit',\n onlyUpperCase: 'Type letter in UpperCase',\n onlyLowerCase: 'Type letter in LowerCase',\n default: null\n }\n"
126
+ description: "Errors Descriptions: <br/>\n {\n ".concat(Object.keys(_config.DEFAULT_ERRORS).map(function (key) {
127
+ return "<br/> &nbsp;&nbsp;&nbsp;&nbsp;".concat(key, ": '").concat(_config.DEFAULT_ERRORS[key], "'");
128
+ }), "\n <br/>\n }")
125
129
  },
126
130
  error: {
127
131
  type: 'string',
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ module.exports = {
4
+ UPPERCASE_LETTER_MASK_CHAR: 'L',
5
+ LOWERCASE_LETTER_MASK_CHAR: 'l',
6
+ DIGIT_MASK_CHAR: 'D',
7
+ SPACE_CHAR: "\xA0",
8
+ EXCLUDED_KEYS: ['Tab'],
9
+ DEFAULT_ERRORS: {
10
+ onlyLetter: 'Type letter',
11
+ onlyDigit: 'Type digit',
12
+ onlyUpperCase: 'Type letter in UpperCase',
13
+ onlyLowerCase: 'Type letter in LowerCase',
14
+ default: null
15
+ }
16
+ };
@@ -3,14 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.selectElementContents = exports.copyToClipboard = exports.resetSelectionText = exports.getSelectionText = void 0;
6
+ exports.voidFn = exports.isLetterMaskChar = exports.isDigitMaskChar = exports.isDigit = exports.isLowerCaseLetter = exports.isUpperCaseLetter = exports.isLetter = exports.selectElementContents = exports.copyToClipboard = exports.resetSelectionText = exports.getSelectionText = void 0;
7
+
8
+ var _config = require("./config");
7
9
 
8
10
  var getSelectionText = function getSelectionText() {
9
- var text = "";
11
+ var text = '';
10
12
 
11
13
  if (window.getSelection) {
12
14
  text = window.getSelection().toString();
13
- } else if (document.selection && document.selection.type != "Control") {
15
+ } else if (document.selection && document.selection.type !== 'Control') {
14
16
  text = document.selection.createRange().text;
15
17
  }
16
18
 
@@ -28,7 +30,8 @@ var resetSelectionText = function resetSelectionText() {
28
30
  exports.resetSelectionText = resetSelectionText;
29
31
 
30
32
  var copyToClipboard = function copyToClipboard(str) {
31
- if (navigator && navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(str);
33
+ if (navigator && navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(str); // eslint-disable-next-line prefer-promise-reject-errors
34
+
32
35
  return Promise.reject('The Clipboard API is not available.');
33
36
  };
34
37
 
@@ -42,4 +45,46 @@ var selectElementContents = function selectElementContents(el) {
42
45
  sel.addRange(range);
43
46
  };
44
47
 
45
- exports.selectElementContents = selectElementContents;
48
+ exports.selectElementContents = selectElementContents;
49
+
50
+ var isLetter = function isLetter(char) {
51
+ return Boolean((char === null || char === void 0 ? void 0 : char.length) === 1 && (char === null || char === void 0 ? void 0 : char.match(/[a-z]/i)));
52
+ };
53
+
54
+ exports.isLetter = isLetter;
55
+
56
+ var isUpperCaseLetter = function isUpperCaseLetter(char) {
57
+ return isLetter(char) ? char === char.slice().toUpperCase() : false;
58
+ };
59
+
60
+ exports.isUpperCaseLetter = isUpperCaseLetter;
61
+
62
+ var isLowerCaseLetter = function isLowerCaseLetter(char) {
63
+ return isLetter(char) ? char === char.slice().toLowerCase() : false;
64
+ };
65
+
66
+ exports.isLowerCaseLetter = isLowerCaseLetter;
67
+
68
+ var isDigit = function isDigit(char) {
69
+ return Boolean(Number.isInteger(parseInt(char)));
70
+ };
71
+
72
+ exports.isDigit = isDigit;
73
+
74
+ var isDigitMaskChar = function isDigitMaskChar(char) {
75
+ return char === _config.DIGIT_MASK_CHAR;
76
+ };
77
+
78
+ exports.isDigitMaskChar = isDigitMaskChar;
79
+
80
+ var isLetterMaskChar = function isLetterMaskChar(char) {
81
+ return char === _config.UPPERCASE_LETTER_MASK_CHAR || char === _config.LOWERCASE_LETTER_MASK_CHAR;
82
+ };
83
+
84
+ exports.isLetterMaskChar = isLetterMaskChar;
85
+
86
+ var voidFn = function voidFn() {
87
+ console.error('Void Function Called');
88
+ };
89
+
90
+ exports.voidFn = voidFn;
@@ -289,20 +289,24 @@ var NumericInput = function NumericInput(_ref) {
289
289
  className: "input__nums"
290
290
  }, /*#__PURE__*/_react.default.createElement("button", {
291
291
  ref: decRef,
292
+ className: (0, _classnames.default)('input__num-btn', {
293
+ 'events-none': +value <= min
294
+ }),
292
295
  onMouseDown: function onMouseDown(e) {
293
296
  return handle.decrement(e);
294
- },
295
- className: "input__num-btn"
297
+ }
296
298
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.Minus, {
297
299
  className: (0, _classnames.default)({
298
300
  disabled: +value <= min
299
301
  })
300
302
  })), /*#__PURE__*/_react.default.createElement("button", {
301
303
  ref: incRef,
304
+ className: (0, _classnames.default)('input__num-btn', {
305
+ 'events-none': +value >= max
306
+ }),
302
307
  onMouseDown: function onMouseDown(e) {
303
308
  return handle.increment(e);
304
- },
305
- className: "input__num-btn"
309
+ }
306
310
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.Plus, {
307
311
  className: (0, _classnames.default)({
308
312
  disabled: +value >= max
@@ -133,3 +133,7 @@
133
133
  visibility: visible;
134
134
  pointer-events: all;
135
135
  }
136
+
137
+ .events-none {
138
+ pointer-events: none;
139
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intelicoreact",
3
- "version": "0.1.56",
3
+ "version": "0.1.59",
4
4
  "description": "fix UserBox crush",
5
5
  "main": "dist/index.js",
6
6
  "files": ["dist/*", "node_modules/anme/*", "node_modules/moment/*", "node_modules/moment-timezone/*"],