UNPKG

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
"use strict"; 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