UNPKG

@ozen-ui/kit

Version:

React component library

80 lines (79 loc) 2.72 kB
import { isFunction } from '../../utils/isFunction'; import { isString } from '../../utils/isString'; import { isNumber } from '../../utils/number'; export var maskSymbol = function (mask, value, index) { if (value === '') { return ''; } if (isString(mask)) { return mask; } if (isFunction(mask)) { return mask(value, index); } return value; }; export var maskValue = function (mask, value) { var _a; return (_a = value === null || value === void 0 ? void 0 : value.map(function (value, index) { return maskSymbol(mask, value, index); })) !== null && _a !== void 0 ? _a : []; }; export var calculateInput = function (_a) { var _b; var valueByIndex = _a.valueByIndex, index = _a.index, mask = _a.mask, length = _a.length, isDisabledGlobal = _a.disabled, focusedInputIndex = _a.focusedInputIndex; var requiredValueByIndex = valueByIndex !== null && valueByIndex !== void 0 ? valueByIndex : []; var value = (_b = requiredValueByIndex[index]) !== null && _b !== void 0 ? _b : ''; var maskedValue = maskSymbol(mask, value, index); var lastFilledInputIndex = requiredValueByIndex.findLastIndex(function (value) { return value !== '' && value !== undefined; }); var isBackward = index <= lastFilledInputIndex; var isPrevious = index === lastFilledInputIndex; var isNext = index === lastFilledInputIndex + 2; var isCurrentInput = index === lastFilledInputIndex + 1; var isLast = index === length - 1; var isPreviousByFocusedInput = isNumber(focusedInputIndex) && index < focusedInputIndex; var isFocusedInput = index === focusedInputIndex; var isDisabled = (function () { if (isDisabledGlobal) { return true; } if (isFocusedInput) { return false; } if (isPreviousByFocusedInput) { return false; } if (isBackward) { return false; } if (value !== '') { return false; } return !isCurrentInput; })(); return { value: maskedValue, rawValue: value, isPrevious: isPrevious, isNext: isNext, isCurrentInput: isCurrentInput, isLast: isLast, isDisabled: isDisabled, }; }; export var valueToString = function (value) { if (!value) { return ''; } return value .map(function (value) { if (value === '') { return ' '; } return value; }) .join(''); }; export var valueToArray = function (value) { return value.split('').map(function (value) { if (value === ' ') { return ''; } return value; }); };