react-native-advanced-input-mask
Version:
Text input mask for React Native on iOS, Android and web. Synchronous and easy formatting without hustle
50 lines (49 loc) • 1.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _Mask = _interopRequireDefault(require("./Mask"));
var _RTLCaretStringIterator = _interopRequireDefault(require("./RTLCaretStringIterator"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
class RTLMask extends _Mask.default {
static rtlCache = new Map();
constructor(format, customNotations) {
super(RTLMask.reversedFormat(format), customNotations);
}
static getOrCreate(format, customNotations) {
const key = RTLMask.reversedFormat(format);
const cachedMask = RTLMask.rtlCache.get(key);
if (!cachedMask) {
const newMask = new RTLMask(format, customNotations);
RTLMask.rtlCache.set(key, newMask);
return newMask;
}
return cachedMask;
}
apply(text) {
return super.apply(text.reversed()).reversed();
}
makeIterator(text) {
return new _RTLCaretStringIterator.default(text);
}
static reversedFormat(format) {
const mapped = format.split("").reduceRight((acc, char) => {
switch (char) {
case "[":
return acc + "]";
case "]":
return acc + "[";
case "{":
return acc + "}";
case "}":
return acc + "{";
default:
return acc + char;
}
}, "");
return mapped;
}
}
exports.default = RTLMask;
//# sourceMappingURL=RTLMask.js.map
;