@ozen-ui/kit
Version:
React component library
80 lines (79 loc) • 2.72 kB
JavaScript
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;
});
};