react-native-advanced-input-mask
Version:
Text input mask for React Native on iOS, Android and web. Synchronous and easy formatting without hustle
51 lines (50 loc) • 1.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _utils = require("../utils");
var _State = _interopRequireDefault(require("./State"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class ValueState extends _State.default {
constructor(child, valueState) {
super(child);
this.stateType = valueState;
}
accepts(character) {
if ("name" in this.stateType) {
if (this.stateType.name === "ellipsis") {
return this.checkEllipsis(this.stateType.inheritedType, character);
}
return this.stateType.regex.test(character);
}
return this.stateType.characterSet.includes(character);
}
checkEllipsis(stateType, character) {
if ("name" in stateType) {
if (stateType.name === "ellipsis") {
this.checkEllipsis(stateType.inheritedType, character);
} else {
return stateType.regex.test(character);
}
}
return stateType.characterSet.includes(character);
}
accept = character => this.accepts(character) ? {
state: this.nextState(),
insert: character,
pass: true,
value: character
} : null;
get isElliptical() {
return "name" in this.stateType && this.stateType.name === "ellipsis";
}
nextState = () => this.isElliptical ? this : this.child;
toString = () => {
var _this$child;
const typeStr = (0, _utils.getCharacterTypeString)(this.stateType);
return `${typeStr} -> ${((_this$child = this.child) === null || _this$child === void 0 ? void 0 : _this$child.toString()) ?? "null"}`;
};
}
var _default = exports.default = ValueState;
//# sourceMappingURL=ValueState.js.map