!(function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e( ((t = "undefined" != typeof globalThis ? globalThis : t || self).IMask = {}) ); })(this, function (t) { "use strict"; function e(t) { return "string" == typeof t || t instanceof String; } function s(t) { var e; return ( "object" == typeof t && null != t && "Object" === (null == t || null == (e = t.constructor) ? void 0 : e.name) ); } function i(t, e) { return Array.isArray(e) ? i(t, (t, s) => e.includes(s)) : Object.entries(t).reduce((t, s) => { let [i, a] = s; return e(a, i) && (t[i] = a), t; }, {}); } const a = { NONE: "NONE", LEFT: "LEFT", FORCE_LEFT: "FORCE_LEFT", RIGHT: "RIGHT", FORCE_RIGHT: "FORCE_RIGHT", }; function u(t) { switch (t) { case a.LEFT: return a.FORCE_LEFT; case a.RIGHT: return a.FORCE_RIGHT; default: return t; } } function n(t) { return t.replace(/([.*+?^=!:${}()|[\]/\\])/g, "\\$1"); } function r(t, e) { if (e === t) return !0; const s = Array.isArray(e), i = Array.isArray(t); let a; if (s && i) { if (e.length != t.length) return !1; for (a = 0; a < e.length; a++) if (!r(e[a], t[a])) return !1; return !0; } if (s != i) return !1; if (e && t && "object" == typeof e && "object" == typeof t) { const s = e instanceof Date, i = t instanceof Date; if (s && i) return e.getTime() == t.getTime(); if (s != i) return !1; const u = e instanceof RegExp, n = t instanceof RegExp; if (u && n) return e.toString() == t.toString(); if (u != n) return !1; const h = Object.keys(e); for (a = 0; a < h.length; a++) if (!Object.prototype.hasOwnProperty.call(t, h[a])) return !1; for (a = 0; a < h.length; a++) if (!r(t[h[a]], e[h[a]])) return !1; return !0; } return ( !(!e || !t || "function" != typeof e || "function" != typeof t) && e.toString() === t.toString() ); } class h { constructor(t) { for ( Object.assign(this, t); this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos); ) --this.oldSelection.start; if (this.insertedCount) for ( ; this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end); ) this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end ? ++this.oldSelection.end : ++this.cursorPos; } get startChangePos() { return Math.min(this.cursorPos, this.oldSelection.start); } get insertedCount() { return this.cursorPos - this.startChangePos; } get inserted() { return this.value.substr(this.startChangePos, this.insertedCount); } get removedCount() { return Math.max( this.oldSelection.end - this.startChangePos || this.oldValue.length - this.value.length, 0 ); } get removed() { return this.oldValue.substr(this.startChangePos, this.removedCount); } get head() { return this.value.substring(0, this.startChangePos); } get tail() { return this.value.substring(this.startChangePos + this.insertedCount); } get removeDirection() { return !this.removedCount || this.insertedCount ? a.NONE : (this.oldSelection.end !== this.cursorPos && this.oldSelection.start !== this.cursorPos) || this.oldSelection.end !== this.oldSelection.start ? a.LEFT : a.RIGHT; } } function o(t, e) { return new o.InputMask(t, e); } function l(t) { if (null == t) throw new Error("mask property should be defined"); return t instanceof RegExp ? o.MaskedRegExp : e(t) ? o.MaskedPattern : t === Date ? o.MaskedDate : t === Number ? o.MaskedNumber : Array.isArray(t) || t === Array ? o.MaskedDynamic : o.Masked && t.prototype instanceof o.Masked ? t : o.Masked && t instanceof o.Masked ? t.constructor : t instanceof Function ? o.MaskedFunction : (console.warn("Mask not found for mask", t), o.Masked); } function p(t) { if (!t) throw new Error("Options in not defined"); if (o.Masked) { if (t.prototype instanceof o.Masked) return { mask: t }; const { mask: e, ...a } = t instanceof o.Masked ? { mask: t } : s(t) && t.mask instanceof o.Masked ? t : {}; if (e) { const t = e.mask; return { ...i(e, (t, e) => !e.startsWith("_")), mask: e.constructor, _mask: t, ...a, }; } } return s(t) ? { ...t } : { mask: t }; } function d(t) { if (o.Masked && t instanceof o.Masked) return t; const e = p(t), s = l(e.mask); if (!s) throw new Error( "Masked class is not found for provided mask " + e.mask + ", appropriate module needs to be imported manually before creating mask." ); return ( e.mask === s && delete e.mask, e._mask && ((e.mask = e._mask), delete e._mask), new s(e) ); } o.createMask = d; class c { get selectionStart() { let t; try { t = this._unsafeSelectionStart; } catch {} return null != t ? t : this.value.length; } get selectionEnd() { let t; try { t = this._unsafeSelectionEnd; } catch {} return null != t ? t : this.value.length; } select(t, e) { if ( null != t && null != e && (t !== this.selectionStart || e !== this.selectionEnd) ) try { this._unsafeSelect(t, e); } catch {} } get isActive() { return !1; } } o.MaskElement = c; class g extends c { constructor(t) { super(), (this.input = t), (this._onKeydown = this._onKeydown.bind(this)), (this._onInput = this._onInput.bind(this)), (this._onBeforeinput = this._onBeforeinput.bind(this)), (this._onCompositionEnd = this._onCompositionEnd.bind(this)); } get rootElement() { var t, e, s; return null != (t = null == (e = (s = this.input).getRootNode) ? void 0 : e.call(s)) ? t : document; } get isActive() { return this.input === this.rootElement.activeElement; } bindEvents(t) { this.input.addEventListener("keydown", this._onKeydown), this.input.addEventListener("input", this._onInput), this.input.addEventListener("beforeinput", this._onBeforeinput), this.input.addEventListener("compositionend", this._onCompositionEnd), this.input.addEventListener("drop", t.drop), this.input.addEventListener("click", t.click), this.input.addEventListener("focus", t.focus), this.input.addEventListener("blur", t.commit), (this._handlers = t); } _onKeydown(t) { return this._handlers.redo && ((90 === t.keyCode && t.shiftKey && (t.metaKey || t.ctrlKey)) || (89 === t.keyCode && t.ctrlKey)) ? (t.preventDefault(), this._handlers.redo(t)) : this._handlers.undo && 90 === t.keyCode && (t.metaKey || t.ctrlKey) ? (t.preventDefault(), this._handlers.undo(t)) : void (t.isComposing || this._handlers.selectionChange(t)); } _onBeforeinput(t) { return "historyUndo" === t.inputType && this._handlers.undo ? (t.preventDefault(), this._handlers.undo(t)) : "historyRedo" === t.inputType && this._handlers.redo ? (t.preventDefault(), this._handlers.redo(t)) : void 0; } _onCompositionEnd(t) { this._handlers.input(t); } _onInput(t) { t.isComposing || this._handlers.input(t); } unbindEvents() { this.input.removeEventListener("keydown", this._onKeydown), this.input.removeEventListener("input", this._onInput), this.input.removeEventListener("beforeinput", this._onBeforeinput), this.input.removeEventListener( "compositionend", this._onCompositionEnd ), this.input.removeEventListener("drop", this._handlers.drop), this.input.removeEventListener("click", this._handlers.click), this.input.removeEventListener("focus", this._handlers.focus), this.input.removeEventListener("blur", this._handlers.commit), (this._handlers = {}); } } o.HTMLMaskElement = g; class k extends g { constructor(t) { super(t), (this.input = t); } get _unsafeSelectionStart() { return null != this.input.selectionStart ? this.input.selectionStart : this.value.length; } get _unsafeSelectionEnd() { return this.input.selectionEnd; } _unsafeSelect(t, e) { this.input.setSelectionRange(t, e); } get value() { return this.input.value; } set value(t) { this.input.value = t; } } o.HTMLMaskElement = g; class m extends g { get _unsafeSelectionStart() { const t = this.rootElement, e = t.getSelection && t.getSelection(), s = e && e.anchorOffset, i = e && e.focusOffset; return null == i || null == s || s < i ? s : i; } get _unsafeSelectionEnd() { const t = this.rootElement, e = t.getSelection && t.getSelection(), s = e && e.anchorOffset, i = e && e.focusOffset; return null == i || null == s || s > i ? s : i; } _unsafeSelect(t, e) { if (!this.rootElement.createRange) return; const s = this.rootElement.createRange(); s.setStart(this.input.firstChild || this.input, t), s.setEnd(this.input.lastChild || this.input, e); const i = this.rootElement, a = i.getSelection && i.getSelection(); a && (a.removeAllRanges(), a.addRange(s)); } get value() { return this.input.textContent || ""; } set value(t) { this.input.textContent = t; } } o.HTMLContenteditableMaskElement = m; class _ { constructor() { (this.states = []), (this.currentIndex = 0); } get currentState() { return this.states[this.currentIndex]; } get isEmpty() { return 0 === this.states.length; } push(t) { this.currentIndex < this.states.length - 1 && (this.states.length = this.currentIndex + 1), this.states.push(t), this.states.length > _.MAX_LENGTH && this.states.shift(), (this.currentIndex = this.states.length - 1); } go(t) { return ( (this.currentIndex = Math.min( Math.max(this.currentIndex + t, 0), this.states.length - 1 )), this.currentState ); } undo() { return this.go(-1); } redo() { return this.go(1); } clear() { (this.states.length = 0), (this.currentIndex = 0); } } _.MAX_LENGTH = 100; class f { constructor(t, e) { (this.el = t instanceof c ? t : t.isContentEditable && "INPUT" !== t.tagName && "TEXTAREA" !== t.tagName ? new m(t) : new k(t)), (this.masked = d(e)), (this._listeners = {}), (this._value = ""), (this._unmaskedValue = ""), (this._rawInputValue = ""), (this.history = new _()), (this._saveSelection = this._saveSelection.bind(this)), (this._onInput = this._onInput.bind(this)), (this._onChange = this._onChange.bind(this)), (this._onDrop = this._onDrop.bind(this)), (this._onFocus = this._onFocus.bind(this)), (this._onClick = this._onClick.bind(this)), (this._onUndo = this._onUndo.bind(this)), (this._onRedo = this._onRedo.bind(this)), (this.alignCursor = this.alignCursor.bind(this)), (this.alignCursorFriendly = this.alignCursorFriendly.bind(this)), this._bindEvents(), this.updateValue(), this._onChange(); } maskEquals(t) { var e; return ( null == t || (null == (e = this.masked) ? void 0 : e.maskEquals(t)) ); } get mask() { return this.masked.mask; } set mask(t) { if (this.maskEquals(t)) return; if (!(t instanceof o.Masked) && this.masked.constructor === l(t)) return void this.masked.updateOptions({ mask: t }); const e = t instanceof o.Masked ? t : d({ mask: t }); (e.unmaskedValue = this.masked.unmaskedValue), (this.masked = e); } get value() { return this._value; } set value(t) { this.value !== t && ((this.masked.value = t), this.updateControl("auto")); } get unmaskedValue() { return this._unmaskedValue; } set unmaskedValue(t) { this.unmaskedValue !== t && ((this.masked.unmaskedValue = t), this.updateControl("auto")); } get rawInputValue() { return this._rawInputValue; } set rawInputValue(t) { this.rawInputValue !== t && ((this.masked.rawInputValue = t), this.updateControl(), this.alignCursor()); } get typedValue() { return this.masked.typedValue; } set typedValue(t) { this.masked.typedValueEquals(t) || ((this.masked.typedValue = t), this.updateControl("auto")); } get displayValue() { return this.masked.displayValue; } _bindEvents() { this.el.bindEvents({ selectionChange: this._saveSelection, input: this._onInput, drop: this._onDrop, click: this._onClick, focus: this._onFocus, commit: this._onChange, undo: this._onUndo, redo: this._onRedo, }); } _unbindEvents() { this.el && this.el.unbindEvents(); } _fireEvent(t, e) { const s = this._listeners[t]; s && s.forEach((t) => t(e)); } get selectionStart() { return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart; } get cursorPos() { return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd; } set cursorPos(t) { this.el && this.el.isActive && (this.el.select(t, t), this._saveSelection()); } _saveSelection() { this.displayValue !== this.el.value && console.warn( "Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly." ), (this._selection = { start: this.selectionStart, end: this.cursorPos }); } updateValue() { (this.masked.value = this.el.value), (this._value = this.masked.value), (this._unmaskedValue = this.masked.unmaskedValue), (this._rawInputValue = this.masked.rawInputValue); } updateControl(t) { const e = this.masked.unmaskedValue, s = this.masked.value, i = this.masked.rawInputValue, a = this.displayValue, u = this.unmaskedValue !== e || this.value !== s || this._rawInputValue !== i; (this._unmaskedValue = e), (this._value = s), (this._rawInputValue = i), this.el.value !== a && (this.el.value = a), "auto" === t ? this.alignCursor() : null != t && (this.cursorPos = t), u && this._fireChangeEvents(), this._historyChanging || (!u && !this.history.isEmpty) || this.history.push({ unmaskedValue: e, selection: { start: this.selectionStart, end: this.cursorPos }, }); } updateOptions(t) { const { mask: e, ...s } = t, i = !this.maskEquals(e), a = this.masked.optionsIsChanged(s); i && (this.mask = e), a && this.masked.updateOptions(s), (i || a) && this.updateControl(); } updateCursor(t) { null != t && ((this.cursorPos = t), this._delayUpdateCursor(t)); } _delayUpdateCursor(t) { this._abortUpdateCursor(), (this._changingCursorPos = t), (this._cursorChanging = setTimeout(() => { this.el && ((this.cursorPos = this._changingCursorPos), this._abortUpdateCursor()); }, 10)); } _fireChangeEvents() { this._fireEvent("accept", this._inputEvent), this.masked.isComplete && this._fireEvent("complete", this._inputEvent); } _abortUpdateCursor() { this._cursorChanging && (clearTimeout(this._cursorChanging), delete this._cursorChanging); } alignCursor() { this.cursorPos = this.masked.nearestInputPos( this.masked.nearestInputPos(this.cursorPos, a.LEFT) ); } alignCursorFriendly() { this.selectionStart === this.cursorPos && this.alignCursor(); } on(t, e) { return ( this._listeners[t] || (this._listeners[t] = []), this._listeners[t].push(e), this ); } off(t, e) { if (!this._listeners[t]) return this; if (!e) return delete this._listeners[t], this; const s = this._listeners[t].indexOf(e); return s >= 0 && this._listeners[t].splice(s, 1), this; } _onInput(t) { (this._inputEvent = t), this._abortUpdateCursor(); const e = new h({ value: this.el.value, cursorPos: this.cursorPos, oldValue: this.displayValue, oldSelection: this._selection, }), s = this.masked.rawInputValue, i = this.masked.splice( e.startChangePos, e.removed.length, e.inserted, e.removeDirection, { input: !0, raw: !0 } ).offset, u = s === this.masked.rawInputValue ? e.removeDirection : a.NONE; let n = this.masked.nearestInputPos(e.startChangePos + i, u); u !== a.NONE && (n = this.masked.nearestInputPos(n, a.NONE)), this.updateControl(n), delete this._inputEvent; } _onChange() { this.displayValue !== this.el.value && this.updateValue(), this.masked.doCommit(), this.updateControl(), this._saveSelection(); } _onDrop(t) { t.preventDefault(), t.stopPropagation(); } _onFocus(t) { this.alignCursorFriendly(); } _onClick(t) { this.alignCursorFriendly(); } _onUndo() { this._applyHistoryState(this.history.undo()); } _onRedo() { this._applyHistoryState(this.history.redo()); } _applyHistoryState(t) { t && ((this._historyChanging = !0), (this.unmaskedValue = t.unmaskedValue), this.el.select(t.selection.start, t.selection.end), this._saveSelection(), (this._historyChanging = !1)); } destroy() { this._unbindEvents(), (this._listeners.length = 0), delete this.el; } } o.InputMask = f; class v { static normalize(t) { return Array.isArray(t) ? t : [t, new v()]; } constructor(t) { Object.assign( this, { inserted: "", rawInserted: "", tailShift: 0, skip: !1 }, t ); } aggregate(t) { return ( (this.inserted += t.inserted), (this.rawInserted += t.rawInserted), (this.tailShift += t.tailShift), (this.skip = this.skip || t.skip), this ); } get offset() { return this.tailShift + this.inserted.length; } get consumed() { return Boolean(this.rawInserted) || this.skip; } equals(t) { return ( this.inserted === t.inserted && this.tailShift === t.tailShift && this.rawInserted === t.rawInserted && this.skip === t.skip ); } } o.ChangeDetails = v; class E { constructor(t, e, s) { void 0 === t && (t = ""), void 0 === e && (e = 0), (this.value = t), (this.from = e), (this.stop = s); } toString() { return this.value; } extend(t) { this.value += String(t); } appendTo(t) { return t .append(this.toString(), { tail: !0 }) .aggregate(t._appendPlaceholder()); } get state() { return { value: this.value, from: this.from, stop: this.stop }; } set state(t) { Object.assign(this, t); } unshift(t) { if (!this.value.length || (null != t && this.from >= t)) return ""; const e = this.value[0]; return (this.value = this.value.slice(1)), e; } shift() { if (!this.value.length) return ""; const t = this.value[this.value.length - 1]; return (this.value = this.value.slice(0, -1)), t; } } class C { constructor(t) { (this._value = ""), this._update({ ...C.DEFAULTS, ...t }), (this._initialized = !0); } updateOptions(t) { this.optionsIsChanged(t) && this.withValueRefresh(this._update.bind(this, t)); } _update(t) { Object.assign(this, t); } get state() { return { _value: this.value, _rawInputValue: this.rawInputValue }; } set state(t) { this._value = t._value; } reset() { this._value = ""; } get value() { return this._value; } set value(t) { this.resolve(t, { input: !0 }); } resolve(t, e) { void 0 === e && (e = { input: !0 }), this.reset(), this.append(t, e, ""), this.doCommit(); } get unmaskedValue() { return this.value; } set unmaskedValue(t) { this.resolve(t, {}); } get typedValue() { return this.parse ? this.parse(this.value, this) : this.unmaskedValue; } set typedValue(t) { this.format ? (this.value = this.format(t, this)) : (this.unmaskedValue = String(t)); } get rawInputValue() { return this.extractInput(0, this.displayValue.length, { raw: !0 }); } set rawInputValue(t) { this.resolve(t, { raw: !0 }); } get displayValue() { return this.value; } get isComplete() { return !0; } get isFilled() { return this.isComplete; } nearestInputPos(t, e) { return t; } totalInputPositions(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), Math.min(this.displayValue.length, e - t) ); } extractInput(t, e, s) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), this.displayValue.slice(t, e) ); } extractTail(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), new E(this.extractInput(t, e), t) ); } appendTail(t) { return e(t) && (t = new E(String(t))), t.appendTo(this); } _appendCharRaw(t, e) { return t ? ((this._value += t), new v({ inserted: t, rawInserted: t })) : new v(); } _appendChar(t, e, s) { void 0 === e && (e = {}); const i = this.state; let a; if ( (([t, a] = this.doPrepareChar(t, e)), t && ((a = a.aggregate(this._appendCharRaw(t, e))), !a.rawInserted && "pad" === this.autofix)) ) { const s = this.state; this.state = i; let u = this.pad(e); const n = this._appendCharRaw(t, e); (u = u.aggregate(n)), n.rawInserted || u.equals(a) ? (a = u) : (this.state = s); } if (a.inserted) { let t, u = !1 !== this.doValidate(e); if (u && null != s) { const e = this.state; if (!0 === this.overwrite) { t = s.state; for (let t = 0; t < a.rawInserted.length; ++t) s.unshift(this.displayValue.length - a.tailShift); } let i = this.appendTail(s); if ( ((u = i.rawInserted.length === s.toString().length), !((u && i.inserted) || "shift" !== this.overwrite)) ) { (this.state = e), (t = s.state); for (let t = 0; t < a.rawInserted.length; ++t) s.shift(); (i = this.appendTail(s)), (u = i.rawInserted.length === s.toString().length); } u && i.inserted && (this.state = e); } u || ((a = new v()), (this.state = i), s && t && (s.state = t)); } return a; } _appendPlaceholder() { return new v(); } _appendEager() { return new v(); } append(t, s, i) { if (!e(t)) throw new Error("value should be string"); const a = e(i) ? new E(String(i)) : i; let u; null != s && s.tail && (s._beforeTailState = this.state), ([t, u] = this.doPrepare(t, s)); for (let e = 0; e < t.length; ++e) { const i = this._appendChar(t[e], s, a); if (!i.rawInserted && !this.doSkipInvalid(t[e], s, a)) break; u.aggregate(i); } return ( (!0 === this.eager || "append" === this.eager) && null != s && s.input && t && u.aggregate(this._appendEager()), null != a && (u.tailShift += this.appendTail(a).tailShift), u ); } remove(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), (this._value = this.displayValue.slice(0, t) + this.displayValue.slice(e)), new v() ); } withValueRefresh(t) { if (this._refreshing || !this._initialized) return t(); this._refreshing = !0; const e = this.rawInputValue, s = this.value, i = t(); return ( (this.rawInputValue = e), this.value && this.value !== s && 0 === s.indexOf(this.value) && (this.append(s.slice(this.displayValue.length), {}, ""), this.doCommit()), delete this._refreshing, i ); } runIsolated(t) { if (this._isolated || !this._initialized) return t(this); this._isolated = !0; const e = this.state, s = t(this); return (this.state = e), delete this._isolated, s; } doSkipInvalid(t, e, s) { return Boolean(this.skipInvalid); } doPrepare(t, e) { return ( void 0 === e && (e = {}), v.normalize(this.prepare ? this.prepare(t, this, e) : t) ); } doPrepareChar(t, e) { return ( void 0 === e && (e = {}), v.normalize(this.prepareChar ? this.prepareChar(t, this, e) : t) ); } doValidate(t) { return ( (!this.validate || this.validate(this.value, this, t)) && (!this.parent || this.parent.doValidate(t)) ); } doCommit() { this.commit && this.commit(this.value, this); } splice(t, e, s, i, n) { void 0 === s && (s = ""), void 0 === i && (i = a.NONE), void 0 === n && (n = { input: !0 }); const r = t + e, h = this.extractTail(r), o = !0 === this.eager || "remove" === this.eager; let l; o && ((i = u(i)), (l = this.extractInput(0, r, { raw: !0 }))); let p = t; const d = new v(); if ( (i !== a.NONE && ((p = this.nearestInputPos(t, e > 1 && 0 !== t && !o ? a.NONE : i)), (d.tailShift = p - t)), d.aggregate(this.remove(p)), o && i !== a.NONE && l === this.rawInputValue) ) if (i === a.FORCE_LEFT) { let t; for (; l === this.rawInputValue && (t = this.displayValue.length); ) d.aggregate(new v({ tailShift: -1 })).aggregate(this.remove(t - 1)); } else i === a.FORCE_RIGHT && h.unshift(); return d.aggregate(this.append(s, n, h)); } maskEquals(t) { return this.mask === t; } optionsIsChanged(t) { return !r(this, t); } typedValueEquals(t) { const e = this.typedValue; return ( t === e || (C.EMPTY_VALUES.includes(t) && C.EMPTY_VALUES.includes(e)) || (!!this.format && this.format(t, this) === this.format(this.typedValue, this)) ); } pad(t) { return new v(); } } (C.DEFAULTS = { skipInvalid: !0 }), (C.EMPTY_VALUES = [void 0, null, ""]), (o.Masked = C); class A { constructor(t, e) { void 0 === t && (t = []), void 0 === e && (e = 0), (this.chunks = t), (this.from = e); } toString() { return this.chunks.map(String).join(""); } extend(t) { if (!String(t)) return; t = e(t) ? new E(String(t)) : t; const s = this.chunks[this.chunks.length - 1], i = s && (s.stop === t.stop || null == t.stop) && t.from === s.from + s.toString().length; if (t instanceof E) i ? s.extend(t.toString()) : this.chunks.push(t); else if (t instanceof A) { if (null == t.stop) { let e; for (; t.chunks.length && null == t.chunks[0].stop; ) (e = t.chunks.shift()), (e.from += t.from), this.extend(e); } t.toString() && ((t.stop = t.blockIndex), this.chunks.push(t)); } } appendTo(t) { if (!(t instanceof o.MaskedPattern)) { return new E(this.toString()).appendTo(t); } const e = new v(); for (let s = 0; s < this.chunks.length; ++s) { const i = this.chunks[s], a = t._mapPosToBlock(t.displayValue.length), u = i.stop; let n; if ( (null != u && (!a || a.index <= u) && ((i instanceof A || t._stops.indexOf(u) >= 0) && e.aggregate(t._appendPlaceholder(u)), (n = i instanceof A && t._blocks[u])), n) ) { const s = n.appendTail(i); e.aggregate(s); const a = i.toString().slice(s.rawInserted.length); a && e.aggregate(t.append(a, { tail: !0 })); } else e.aggregate(t.append(i.toString(), { tail: !0 })); } return e; } get state() { return { chunks: this.chunks.map((t) => t.state), from: this.from, stop: this.stop, blockIndex: this.blockIndex, }; } set state(t) { const { chunks: e, ...s } = t; Object.assign(this, s), (this.chunks = e.map((t) => { const e = "chunks" in t ? new A() : new E(); return (e.state = t), e; })); } unshift(t) { if (!this.chunks.length || (null != t && this.from >= t)) return ""; const e = null != t ? t - this.from : t; let s = 0; for (; s < this.chunks.length; ) { const t = this.chunks[s], i = t.unshift(e); if (t.toString()) { if (!i) break; ++s; } else this.chunks.splice(s, 1); if (i) return i; } return ""; } shift() { if (!this.chunks.length) return ""; let t = this.chunks.length - 1; for (; 0 <= t; ) { const e = this.chunks[t], s = e.shift(); if (e.toString()) { if (!s) break; --t; } else this.chunks.splice(t, 1); if (s) return s; } return ""; } } class F { constructor(t, e) { (this.masked = t), (this._log = []); const { offset: s, index: i } = t._mapPosToBlock(e) || (e < 0 ? { index: 0, offset: 0 } : { index: this.masked._blocks.length, offset: 0 }); (this.offset = s), (this.index = i), (this.ok = !1); } get block() { return this.masked._blocks[this.index]; } get pos() { return this.masked._blockStartPos(this.index) + this.offset; } get state() { return { index: this.index, offset: this.offset, ok: this.ok }; } set state(t) { Object.assign(this, t); } pushState() { this._log.push(this.state); } popState() { const t = this._log.pop(); return t && (this.state = t), t; } bindBlock() { this.block || (this.index < 0 && ((this.index = 0), (this.offset = 0)), this.index >= this.masked._blocks.length && ((this.index = this.masked._blocks.length - 1), (this.offset = this.block.displayValue.length))); } _pushLeft(t) { for ( this.pushState(), this.bindBlock(); 0 <= this.index; --this.index, this.offset = (null == (e = this.block) ? void 0 : e.displayValue.length) || 0 ) { var e; if (t()) return (this.ok = !0); } return (this.ok = !1); } _pushRight(t) { for ( this.pushState(), this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0 ) if (t()) return (this.ok = !0); return (this.ok = !1); } pushLeftBeforeFilled() { return this._pushLeft(() => { if (!this.block.isFixed && this.block.value) return ( (this.offset = this.block.nearestInputPos( this.offset, a.FORCE_LEFT )), 0 !== this.offset || void 0 ); }); } pushLeftBeforeInput() { return this._pushLeft(() => { if (!this.block.isFixed) return ( (this.offset = this.block.nearestInputPos(this.offset, a.LEFT)), !0 ); }); } pushLeftBeforeRequired() { return this._pushLeft(() => { if ( !(this.block.isFixed || (this.block.isOptional && !this.block.value)) ) return ( (this.offset = this.block.nearestInputPos(this.offset, a.LEFT)), !0 ); }); } pushRightBeforeFilled() { return this._pushRight(() => { if (!this.block.isFixed && this.block.value) return ( (this.offset = this.block.nearestInputPos( this.offset, a.FORCE_RIGHT )), this.offset !== this.block.value.length || void 0 ); }); } pushRightBeforeInput() { return this._pushRight(() => { if (!this.block.isFixed) return ( (this.offset = this.block.nearestInputPos(this.offset, a.NONE)), !0 ); }); } pushRightBeforeRequired() { return this._pushRight(() => { if ( !(this.block.isFixed || (this.block.isOptional && !this.block.value)) ) return ( (this.offset = this.block.nearestInputPos(this.offset, a.NONE)), !0 ); }); } } class x { constructor(t) { Object.assign(this, t), (this._value = ""), (this.isFixed = !0); } get value() { return this._value; } get unmaskedValue() { return this.isUnmasking ? this.value : ""; } get rawInputValue() { return this._isRawInput ? this.value : ""; } get displayValue() { return this.value; } reset() { (this._isRawInput = !1), (this._value = ""); } remove(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this._value.length), (this._value = this._value.slice(0, t) + this._value.slice(e)), this._value || (this._isRawInput = !1), new v() ); } nearestInputPos(t, e) { void 0 === e && (e = a.NONE); const s = this._value.length; switch (e) { case a.LEFT: case a.FORCE_LEFT: return 0; default: return s; } } totalInputPositions(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this._value.length), this._isRawInput ? e - t : 0 ); } extractInput(t, e, s) { return ( void 0 === t && (t = 0), void 0 === e && (e = this._value.length), void 0 === s && (s = {}), (s.raw && this._isRawInput && this._value.slice(t, e)) || "" ); } get isComplete() { return !0; } get isFilled() { return Boolean(this._value); } _appendChar(t, e) { if ((void 0 === e && (e = {}), this.isFilled)) return new v(); const s = !0 === this.eager || "append" === this.eager, i = this.char === t && (this.isUnmasking || e.input || e.raw) && (!e.raw || !s) && !e.tail, a = new v({ inserted: this.char, rawInserted: i ? this.char : "" }); return ( (this._value = this.char), (this._isRawInput = i && (e.raw || e.input)), a ); } _appendEager() { return this._appendChar(this.char, { tail: !0 }); } _appendPlaceholder() { const t = new v(); return this.isFilled || (this._value = t.inserted = this.char), t; } extractTail() { return new E(""); } appendTail(t) { return e(t) && (t = new E(String(t))), t.appendTo(this); } append(t, e, s) { const i = this._appendChar(t[0], e); return null != s && (i.tailShift += this.appendTail(s).tailShift), i; } doCommit() {} get state() { return { _value: this._value, _rawInputValue: this.rawInputValue }; } set state(t) { (this._value = t._value), (this._isRawInput = Boolean(t._rawInputValue)); } pad(t) { return this._appendPlaceholder(); } } class S { constructor(t) { const { parent: e, isOptional: s, placeholderChar: i, displayChar: a, lazy: u, eager: n, ...r } = t; (this.masked = d(r)), Object.assign(this, { parent: e, isOptional: s, placeholderChar: i, displayChar: a, lazy: u, eager: n, }); } reset() { (this.isFilled = !1), this.masked.reset(); } remove(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.value.length), 0 === t && e >= 1 ? ((this.isFilled = !1), this.masked.remove(t, e)) : new v() ); } get value() { return ( this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : "") ); } get unmaskedValue() { return this.masked.unmaskedValue; } get rawInputValue() { return this.masked.rawInputValue; } get displayValue() { return (this.masked.value && this.displayChar) || this.value; } get isComplete() { return Boolean(this.masked.value) || this.isOptional; } _appendChar(t, e) { if ((void 0 === e && (e = {}), this.isFilled)) return new v(); const s = this.masked.state; let i = this.masked._appendChar(t, this.currentMaskFlags(e)); return ( i.inserted && !1 === this.doValidate(e) && ((i = new v()), (this.masked.state = s)), i.inserted || this.isOptional || this.lazy || e.input || (i.inserted = this.placeholderChar), (i.skip = !i.inserted && !this.isOptional), (this.isFilled = Boolean(i.inserted)), i ); } append(t, e, s) { return this.masked.append(t, this.currentMaskFlags(e), s); } _appendPlaceholder() { return this.isFilled || this.isOptional ? new v() : ((this.isFilled = !0), new v({ inserted: this.placeholderChar })); } _appendEager() { return new v(); } extractTail(t, e) { return this.masked.extractTail(t, e); } appendTail(t) { return this.masked.appendTail(t); } extractInput(t, e, s) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.value.length), this.masked.extractInput(t, e, s) ); } nearestInputPos(t, e) { void 0 === e && (e = a.NONE); const s = this.value.length, i = Math.min(Math.max(t, 0), s); switch (e) { case a.LEFT: case a.FORCE_LEFT: return this.isComplete ? i : 0; case a.RIGHT: case a.FORCE_RIGHT: return this.isComplete ? i : s; default: return i; } } totalInputPositions(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.value.length), this.value.slice(t, e).length ); } doValidate(t) { return ( this.masked.doValidate(this.currentMaskFlags(t)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(t))) ); } doCommit() { this.masked.doCommit(); } get state() { return { _value: this.value, _rawInputValue: this.rawInputValue, masked: this.masked.state, isFilled: this.isFilled, }; } set state(t) { (this.masked.state = t.masked), (this.isFilled = t.isFilled); } currentMaskFlags(t) { var e; return { ...t, _beforeTailState: (null == t || null == (e = t._beforeTailState) ? void 0 : e.masked) || (null == t ? void 0 : t._beforeTailState), }; } pad(t) { return new v(); } } S.DEFAULT_DEFINITIONS = { 0: /\d/, a: /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, "*": /./, }; class B extends C { updateOptions(t) { super.updateOptions(t); } _update(t) { const e = t.mask; e && (t.validate = (t) => t.search(e) >= 0), super._update(t); } } o.MaskedRegExp = B; class b extends C { constructor(t) { super({ ...b.DEFAULTS, ...t, definitions: Object.assign( {}, S.DEFAULT_DEFINITIONS, null == t ? void 0 : t.definitions ), }); } updateOptions(t) { super.updateOptions(t); } _update(t) { (t.definitions = Object.assign({}, this.definitions, t.definitions)), super._update(t), this._rebuildMask(); } _rebuildMask() { const t = this.definitions; (this._blocks = []), (this.exposeBlock = void 0), (this._stops = []), (this._maskedBlocks = {}); const e = this.mask; if (!e || !t) return; let s = !1, i = !1; for (let a = 0; a < e.length; ++a) { if (this.blocks) { const t = e.slice(a), s = Object.keys(this.blocks).filter((e) => 0 === t.indexOf(e)); s.sort((t, e) => e.length - t.length); const i = s[0]; if (i) { const { expose: t, repeat: e, ...s } = p(this.blocks[i]), u = { lazy: this.lazy, eager: this.eager, placeholderChar: this.placeholderChar, displayChar: this.displayChar, overwrite: this.overwrite, autofix: this.autofix, ...s, repeat: e, parent: this, }, n = null != e ? new o.RepeatBlock(u) : d(u); n && (this._blocks.push(n), t && (this.exposeBlock = n), this._maskedBlocks[i] || (this._maskedBlocks[i] = []), this._maskedBlocks[i].push(this._blocks.length - 1)), (a += i.length - 1); continue; } } let u = e[a], n = u in t; if (u === b.STOP_CHAR) { this._stops.push(this._blocks.length); continue; } if ("{" === u || "}" === u) { s = !s; continue; } if ("[" === u || "]" === u) { i = !i; continue; } if (u === b.ESCAPE_CHAR) { if ((++a, (u = e[a]), !u)) break; n = !1; } const r = n ? new S({ isOptional: i, lazy: this.lazy, eager: this.eager, placeholderChar: this.placeholderChar, displayChar: this.displayChar, ...p(t[u]), parent: this, }) : new x({ char: u, eager: this.eager, isUnmasking: s }); this._blocks.push(r); } } get state() { return { ...super.state, _blocks: this._blocks.map((t) => t.state) }; } set state(t) { if (!t) return void this.reset(); const { _blocks: e, ...s } = t; this._blocks.forEach((t, s) => (t.state = e[s])), (super.state = s); } reset() { super.reset(), this._blocks.forEach((t) => t.reset()); } get isComplete() { return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every((t) => t.isComplete); } get isFilled() { return this._blocks.every((t) => t.isFilled); } get isFixed() { return this._blocks.every((t) => t.isFixed); } get isOptional() { return this._blocks.every((t) => t.isOptional); } doCommit() { this._blocks.forEach((t) => t.doCommit()), super.doCommit(); } get unmaskedValue() { return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((t, e) => t + e.unmaskedValue, ""); } set unmaskedValue(t) { if (this.exposeBlock) { const e = this.extractTail( this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length ); (this.exposeBlock.unmaskedValue = t), this.appendTail(e), this.doCommit(); } else super.unmaskedValue = t; } get value() { return this.exposeBlock ? this.exposeBlock.value : this._blocks.reduce((t, e) => t + e.value, ""); } set value(t) { if (this.exposeBlock) { const e = this.extractTail( this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length ); (this.exposeBlock.value = t), this.appendTail(e), this.doCommit(); } else super.value = t; } get typedValue() { return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue; } set typedValue(t) { if (this.exposeBlock) { const e = this.extractTail( this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length ); (this.exposeBlock.typedValue = t), this.appendTail(e), this.doCommit(); } else super.typedValue = t; } get displayValue() { return this._blocks.reduce((t, e) => t + e.displayValue, ""); } appendTail(t) { return super.appendTail(t).aggregate(this._appendPlaceholder()); } _appendEager() { var t; const e = new v(); let s = null == (t = this._mapPosToBlock(this.displayValue.length)) ? void 0 : t.index; if (null == s) return e; this._blocks[s].isFilled && ++s; for (let t = s; t < this._blocks.length; ++t) { const s = this._blocks[t]._appendEager(); if (!s.inserted) break; e.aggregate(s); } return e; } _appendCharRaw(t, e) { void 0 === e && (e = {}); const s = this._mapPosToBlock(this.displayValue.length), i = new v(); if (!s) return i; for (let u, n = s.index; (u = this._blocks[n]); ++n) { var a; const s = u._appendChar(t, { ...e, _beforeTailState: null == (a = e._beforeTailState) || null == (a = a._blocks) ? void 0 : a[n], }); if ((i.aggregate(s), s.consumed)) break; } return i; } extractTail(t, e) { void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length); const s = new A(); return ( t === e || this._forEachBlocksInRange(t, e, (t, e, i, a) => { const u = t.extractTail(i, a); (u.stop = this._findStopBefore(e)), (u.from = this._blockStartPos(e)), u instanceof A && (u.blockIndex = e), s.extend(u); }), s ); } extractInput(t, e, s) { if ( (void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), void 0 === s && (s = {}), t === e) ) return ""; let i = ""; return ( this._forEachBlocksInRange(t, e, (t, e, a, u) => { i += t.extractInput(a, u, s); }), i ); } _findStopBefore(t) { let e; for (let s = 0; s < this._stops.length; ++s) { const i = this._stops[s]; if (!(i <= t)) break; e = i; } return e; } _appendPlaceholder(t) { const e = new v(); if (this.lazy && null == t) return e; const s = this._mapPosToBlock(this.displayValue.length); if (!s) return e; const i = s.index, a = null != t ? t : this._blocks.length; return ( this._blocks.slice(i, a).forEach((s) => { var i; (s.lazy && null == t) || e.aggregate( s._appendPlaceholder(null == (i = s._blocks) ? void 0 : i.length) ); }), e ); } _mapPosToBlock(t) { let e = ""; for (let s = 0; s < this._blocks.length; ++s) { const i = this._blocks[s], a = e.length; if (((e += i.displayValue), t <= e.length)) return { index: s, offset: t - a }; } } _blockStartPos(t) { return this._blocks .slice(0, t) .reduce((t, e) => t + e.displayValue.length, 0); } _forEachBlocksInRange(t, e, s) { void 0 === e && (e = this.displayValue.length); const i = this._mapPosToBlock(t); if (i) { const t = this._mapPosToBlock(e), a = t && i.index === t.index, u = i.offset, n = t && a ? t.offset : this._blocks[i.index].displayValue.length; if ((s(this._blocks[i.index], i.index, u, n), t && !a)) { for (let e = i.index + 1; e < t.index; ++e) s(this._blocks[e], e, 0, this._blocks[e].displayValue.length); s(this._blocks[t.index], t.index, 0, t.offset); } } } remove(t, e) { void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length); const s = super.remove(t, e); return ( this._forEachBlocksInRange(t, e, (t, e, i, a) => { s.aggregate(t.remove(i, a)); }), s ); } nearestInputPos(t, e) { if ((void 0 === e && (e = a.NONE), !this._blocks.length)) return 0; const s = new F(this, t); if (e === a.NONE) return s.pushRightBeforeInput() ? s.pos : (s.popState(), s.pushLeftBeforeInput() ? s.pos : this.displayValue.length); if (e === a.LEFT || e === a.FORCE_LEFT) { if (e === a.LEFT) { if ((s.pushRightBeforeFilled(), s.ok && s.pos === t)) return t; s.popState(); } if ( (s.pushLeftBeforeInput(), s.pushLeftBeforeRequired(), s.pushLeftBeforeFilled(), e === a.LEFT) ) { if ( (s.pushRightBeforeInput(), s.pushRightBeforeRequired(), s.ok && s.pos <= t) ) return s.pos; if ((s.popState(), s.ok && s.pos <= t)) return s.pos; s.popState(); } return s.ok ? s.pos : e === a.FORCE_LEFT ? 0 : (s.popState(), s.ok ? s.pos : (s.popState(), s.ok ? s.pos : 0)); } return e === a.RIGHT || e === a.FORCE_RIGHT ? (s.pushRightBeforeInput(), s.pushRightBeforeRequired(), s.pushRightBeforeFilled() ? s.pos : e === a.FORCE_RIGHT ? this.displayValue.length : (s.popState(), s.ok ? s.pos : (s.popState(), s.ok ? s.pos : this.nearestInputPos(t, a.LEFT)))) : t; } totalInputPositions(t, e) { void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length); let s = 0; return ( this._forEachBlocksInRange(t, e, (t, e, i, a) => { s += t.totalInputPositions(i, a); }), s ); } maskedBlock(t) { return this.maskedBlocks(t)[0]; } maskedBlocks(t) { const e = this._maskedBlocks[t]; return e ? e.map((t) => this._blocks[t]) : []; } pad(t) { const e = new v(); return ( this._forEachBlocksInRange(0, this.displayValue.length, (s) => e.aggregate(s.pad(t)) ), e ); } } (b.DEFAULTS = { ...C.DEFAULTS, lazy: !0, placeholderChar: "_" }), (b.STOP_CHAR = "`"), (b.ESCAPE_CHAR = "\\"), (b.InputDefinition = S), (b.FixedDefinition = x), (o.MaskedPattern = b); class D extends b { get _matchFrom() { return this.maxLength - String(this.from).length; } constructor(t) { super(t); } updateOptions(t) { super.updateOptions(t); } _update(t) { const { to: e = this.to || 0, from: s = this.from || 0, maxLength: i = this.maxLength || 0, autofix: a = this.autofix, ...u } = t; (this.to = e), (this.from = s), (this.maxLength = Math.max(String(e).length, i)), (this.autofix = a); const n = String(this.from).padStart(this.maxLength, "0"), r = String(this.to).padStart(this.maxLength, "0"); let h = 0; for (; h < r.length && r[h] === n[h]; ) ++h; (u.mask = r.slice(0, h).replace(/0/g, "\\0") + "0".repeat(this.maxLength - h)), super._update(u); } get isComplete() { return super.isComplete && Boolean(this.value); } boundaries(t) { let e = "", s = ""; const [, i, a] = t.match(/^(\D*)(\d*)(\D*)/) || []; return ( a && ((e = "0".repeat(i.length) + a), (s = "9".repeat(i.length) + a)), (e = e.padEnd(this.maxLength, "0")), (s = s.padEnd(this.maxLength, "9")), [e, s] ); } doPrepareChar(t, e) { let s; return ( void 0 === e && (e = {}), ([t, s] = super.doPrepareChar(t.replace(/\D/g, ""), e)), t || (s.skip = !this.isComplete), [t, s] ); } _appendCharRaw(t, e) { if ( (void 0 === e && (e = {}), !this.autofix || this.value.length + 1 > this.maxLength) ) return super._appendCharRaw(t, e); const s = String(this.from).padStart(this.maxLength, "0"), i = String(this.to).padStart(this.maxLength, "0"), [a, u] = this.boundaries(this.value + t); return Number(u) < this.from ? super._appendCharRaw(s[this.value.length], e) : Number(a) > this.to ? !e.tail && "pad" === this.autofix && this.value.length + 1 < this.maxLength ? super ._appendCharRaw(s[this.value.length], e) .aggregate(this._appendCharRaw(t, e)) : super._appendCharRaw(i[this.value.length], e) : super._appendCharRaw(t, e); } doValidate(t) { const e = this.value; if (-1 === e.search(/[^0]/) && e.length <= this._matchFrom) return !0; const [s, i] = this.boundaries(e); return ( this.from <= Number(i) && Number(s) <= this.to && super.doValidate(t) ); } pad(t) { const e = new v(); if (this.value.length === this.maxLength) return e; const s = this.value, i = this.maxLength - this.value.length; if (i) { this.reset(); for (let s = 0; s < i; ++s) e.aggregate(super._appendCharRaw("0", t)); s.split("").forEach((t) => this._appendCharRaw(t)); } return e; } } o.MaskedRange = D; class y extends b { static extractPatternOptions(t) { const { mask: s, pattern: i, ...a } = t; return { ...a, mask: e(s) ? s : i }; } constructor(t) { super(y.extractPatternOptions({ ...y.DEFAULTS, ...t })); } updateOptions(t) { super.updateOptions(t); } _update(t) { const { mask: s, pattern: i, blocks: a, ...u } = { ...y.DEFAULTS, ...t }, n = Object.assign({}, y.GET_DEFAULT_BLOCKS()); t.min && (n.Y.from = t.min.getFullYear()), t.max && (n.Y.to = t.max.getFullYear()), t.min && t.max && n.Y.from === n.Y.to && ((n.m.from = t.min.getMonth() + 1), (n.m.to = t.max.getMonth() + 1), n.m.from === n.m.to && ((n.d.from = t.min.getDate()), (n.d.to = t.max.getDate()))), Object.assign(n, this.blocks, a), super._update({ ...u, mask: e(s) ? s : i, blocks: n }); } doValidate(t) { const e = this.date; return ( super.doValidate(t) && (!this.isComplete || (this.isDateExist(this.value) && null != e && (null == this.min || this.min <= e) && (null == this.max || e <= this.max))) ); } isDateExist(t) { return this.format(this.parse(t, this), this).indexOf(t) >= 0; } get date() { return this.typedValue; } set date(t) { this.typedValue = t; } get typedValue() { return this.isComplete ? super.typedValue : null; } set typedValue(t) { super.typedValue = t; } maskEquals(t) { return t === Date || super.maskEquals(t); } optionsIsChanged(t) { return super.optionsIsChanged(y.extractPatternOptions(t)); } } (y.GET_DEFAULT_BLOCKS = () => ({ d: { mask: D, from: 1, to: 31, maxLength: 2 }, m: { mask: D, from: 1, to: 12, maxLength: 2 }, Y: { mask: D, from: 1900, to: 9999 }, })), (y.DEFAULTS = { ...b.DEFAULTS, mask: Date, pattern: "d{.}`m{.}`Y", format: (t, e) => { if (!t) return ""; return [ String(t.getDate()).padStart(2, "0"), String(t.getMonth() + 1).padStart(2, "0"), t.getFullYear(), ].join("."); }, parse: (t, e) => { const [s, i, a] = t.split(".").map(Number); return new Date(a, i - 1, s); }, }), (o.MaskedDate = y); class M extends C { constructor(t) { super({ ...M.DEFAULTS, ...t }), (this.currentMask = void 0); } updateOptions(t) { super.updateOptions(t); } _update(t) { super._update(t), "mask" in t && ((this.exposeMask = void 0), (this.compiledMasks = Array.isArray(t.mask) ? t.mask.map((t) => { const { expose: e, ...s } = p(t), i = d({ overwrite: this._overwrite, eager: this._eager, skipInvalid: this._skipInvalid, ...s, }); return e && (this.exposeMask = i), i; }) : [])); } _appendCharRaw(t, e) { void 0 === e && (e = {}); const s = this._applyDispatch(t, e); return ( this.currentMask && s.aggregate( this.currentMask._appendChar(t, this.currentMaskFlags(e)) ), s ); } _applyDispatch(t, e, s) { void 0 === t && (t = ""), void 0 === e && (e = {}), void 0 === s && (s = ""); const i = e.tail && null != e._beforeTailState ? e._beforeTailState._value : this.value, a = this.rawInputValue, u = e.tail && null != e._beforeTailState ? e._beforeTailState._rawInputValue : a, n = a.slice(u.length), r = this.currentMask, h = new v(), o = null == r ? void 0 : r.state; return ( (this.currentMask = this.doDispatch(t, { ...e }, s)), this.currentMask && (this.currentMask !== r ? (this.currentMask.reset(), u && (this.currentMask.append(u, { raw: !0 }), (h.tailShift = this.currentMask.value.length - i.length)), n && (h.tailShift += this.currentMask.append(n, { raw: !0, tail: !0, }).tailShift)) : o && (this.currentMask.state = o)), h ); } _appendPlaceholder() { const t = this._applyDispatch(); return ( this.currentMask && t.aggregate(this.currentMask._appendPlaceholder()), t ); } _appendEager() { const t = this._applyDispatch(); return ( this.currentMask && t.aggregate(this.currentMask._appendEager()), t ); } appendTail(t) { const e = new v(); return ( t && e.aggregate(this._applyDispatch("", {}, t)), e.aggregate( this.currentMask ? this.currentMask.appendTail(t) : super.appendTail(t) ) ); } currentMaskFlags(t) { var e, s; return { ...t, _beforeTailState: ((null == (e = t._beforeTailState) ? void 0 : e.currentMaskRef) === this.currentMask && (null == (s = t._beforeTailState) ? void 0 : s.currentMask)) || t._beforeTailState, }; } doDispatch(t, e, s) { return ( void 0 === e && (e = {}), void 0 === s && (s = ""), this.dispatch(t, this, e, s) ); } doValidate(t) { return ( super.doValidate(t) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(t))) ); } doPrepare(t, e) { void 0 === e && (e = {}); let [s, i] = super.doPrepare(t, e); if (this.currentMask) { let t; ([s, t] = super.doPrepare(s, this.currentMaskFlags(e))), (i = i.aggregate(t)); } return [s, i]; } doPrepareChar(t, e) { void 0 === e && (e = {}); let [s, i] = super.doPrepareChar(t, e); if (this.currentMask) { let t; ([s, t] = super.doPrepareChar(s, this.currentMaskFlags(e))), (i = i.aggregate(t)); } return [s, i]; } reset() { var t; null == (t = this.currentMask) || t.reset(), this.compiledMasks.forEach((t) => t.reset()); } get value() { return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : ""; } set value(t) { this.exposeMask ? ((this.exposeMask.value = t), (this.currentMask = this.exposeMask), this._applyDispatch()) : (super.value = t); } get unmaskedValue() { return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : ""; } set unmaskedValue(t) { this.exposeMask ? ((this.exposeMask.unmaskedValue = t), (this.currentMask = this.exposeMask), this._applyDispatch()) : (super.unmaskedValue = t); } get typedValue() { return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : ""; } set typedValue(t) { if (this.exposeMask) return ( (this.exposeMask.typedValue = t), (this.currentMask = this.exposeMask), void this._applyDispatch() ); let e = String(t); this.currentMask && ((this.currentMask.typedValue = t), (e = this.currentMask.unmaskedValue)), (this.unmaskedValue = e); } get displayValue() { return this.currentMask ? this.currentMask.displayValue : ""; } get isComplete() { var t; return Boolean(null == (t = this.currentMask) ? void 0 : t.isComplete); } get isFilled() { var t; return Boolean(null == (t = this.currentMask) ? void 0 : t.isFilled); } remove(t, e) { const s = new v(); return ( this.currentMask && s .aggregate(this.currentMask.remove(t, e)) .aggregate(this._applyDispatch()), s ); } get state() { var t; return { ...super.state, _rawInputValue: this.rawInputValue, compiledMasks: this.compiledMasks.map((t) => t.state), currentMaskRef: this.currentMask, currentMask: null == (t = this.currentMask) ? void 0 : t.state, }; } set state(t) { const { compiledMasks: e, currentMaskRef: s, currentMask: i, ...a } = t; e && this.compiledMasks.forEach((t, s) => (t.state = e[s])), null != s && ((this.currentMask = s), (this.currentMask.state = i)), (super.state = a); } extractInput(t, e, s) { return this.currentMask ? this.currentMask.extractInput(t, e, s) : ""; } extractTail(t, e) { return this.currentMask ? this.currentMask.extractTail(t, e) : super.extractTail(t, e); } doCommit() { this.currentMask && this.currentMask.doCommit(), super.doCommit(); } nearestInputPos(t, e) { return this.currentMask ? this.currentMask.nearestInputPos(t, e) : super.nearestInputPos(t, e); } get overwrite() { return this.currentMask ? this.currentMask.overwrite : this._overwrite; } set overwrite(t) { this._overwrite = t; } get eager() { return this.currentMask ? this.currentMask.eager : this._eager; } set eager(t) { this._eager = t; } get skipInvalid() { return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid; } set skipInvalid(t) { this._skipInvalid = t; } get autofix() { return this.currentMask ? this.currentMask.autofix : this._autofix; } set autofix(t) { this._autofix = t; } maskEquals(t) { return Array.isArray(t) ? this.compiledMasks.every((e, s) => { if (!t[s]) return; const { mask: i, ...a } = t[s]; return r(e, a) && e.maskEquals(i); }) : super.maskEquals(t); } typedValueEquals(t) { var e; return Boolean( null == (e = this.currentMask) ? void 0 : e.typedValueEquals(t) ); } } (M.DEFAULTS = { ...C.DEFAULTS, dispatch: (t, e, s, i) => { if (!e.compiledMasks.length) return; const u = e.rawInputValue, n = e.compiledMasks.map((n, r) => { const h = e.currentMask === n, o = h ? n.displayValue.length : n.nearestInputPos(n.displayValue.length, a.FORCE_LEFT); return ( n.rawInputValue !== u ? (n.reset(), n.append(u, { raw: !0 })) : h || n.remove(o), n.append(t, e.currentMaskFlags(s)), n.appendTail(i), { index: r, weight: n.rawInputValue.length, totalInputPositions: n.totalInputPositions( 0, Math.max( o, n.nearestInputPos(n.displayValue.length, a.FORCE_LEFT) ) ), } ); }); return ( n.sort( (t, e) => e.weight - t.weight || e.totalInputPositions - t.totalInputPositions ), e.compiledMasks[n[0].index] ); }, }), (o.MaskedDynamic = M); class I extends b { constructor(t) { super({ ...I.DEFAULTS, ...t }); } updateOptions(t) { super.updateOptions(t); } _update(t) { const { enum: e, ...s } = t; if (e) { const t = e.map((t) => t.length), i = Math.min(...t), a = Math.max(...t) - i; (s.mask = "*".repeat(i)), a && (s.mask += "[" + "*".repeat(a) + "]"), (this.enum = e); } super._update(s); } _appendCharRaw(t, e) { void 0 === e && (e = {}); const s = Math.min( this.nearestInputPos(0, a.FORCE_RIGHT), this.value.length ), i = this.enum.filter((e) => this.matchValue(e, this.unmaskedValue + t, s) ); if (i.length) { 1 === i.length && this._forEachBlocksInRange(0, this.value.length, (t, s) => { const a = i[0][s]; s >= this.value.length || a === t.value || (t.reset(), t._appendChar(a, e)); }); const t = super._appendCharRaw(i[0][this.value.length], e); return ( 1 === i.length && i[0] .slice(this.unmaskedValue.length) .split("") .forEach((e) => t.aggregate(super._appendCharRaw(e))), t ); } return new v({ skip: !this.isComplete }); } extractTail(t, e) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), new E("", t) ); } remove(t, e) { if ( (void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), t === e) ) return new v(); const s = Math.min( super.nearestInputPos(0, a.FORCE_RIGHT), this.value.length ); let i; for (i = t; i >= 0; --i) { if ( this.enum.filter((t) => this.matchValue(t, this.value.slice(s, i), s)) .length > 1 ) break; } const u = super.remove(i, e); return (u.tailShift += i - t), u; } get isComplete() { return this.enum.indexOf(this.value) >= 0; } } (I.DEFAULTS = { ...b.DEFAULTS, matchValue: (t, e, s) => t.indexOf(e, s) === s, }), (o.MaskedEnum = I); class V extends C { updateOptions(t) { super.updateOptions(t); } _update(t) { super._update({ ...t, validate: t.mask }); } } var T; o.MaskedFunction = V; class w extends C { constructor(t) { super({ ...w.DEFAULTS, ...t }); } updateOptions(t) { super.updateOptions(t); } _update(t) { super._update(t), this._updateRegExps(); } _updateRegExps() { const t = "^" + (this.allowNegative ? "[+|\\-]?" : ""), e = (this.scale ? "(" + n(this.radix) + "\\d{0," + this.scale + "})?" : "") + "$"; (this._numberRegExp = new RegExp(t + "\\d*" + e)), (this._mapToRadixRegExp = new RegExp( "[" + this.mapToRadix.map(n).join("") + "]", "g" )), (this._thousandsSeparatorRegExp = new RegExp( n(this.thousandsSeparator), "g" )); } _removeThousandsSeparators(t) { return t.replace(this._thousandsSeparatorRegExp, ""); } _insertThousandsSeparators(t) { const e = t.split(this.radix); return ( (e[0] = e[0].replace(/\B(?=(\d{3})+(?!\d))/g, this.thousandsSeparator)), e.join(this.radix) ); } doPrepareChar(t, e) { void 0 === e && (e = {}); const [s, i] = super.doPrepareChar( this._removeThousandsSeparators( this.scale && this.mapToRadix.length && ((e.input && e.raw) || (!e.input && !e.raw)) ? t.replace(this._mapToRadixRegExp, this.radix) : t ), e ); return ( t && !s && (i.skip = !0), !s || this.allowPositive || this.value || "-" === s || i.aggregate(this._appendChar("-")), [s, i] ); } _separatorsCount(t, e) { void 0 === e && (e = !1); let s = 0; for (let i = 0; i < t; ++i) this._value.indexOf(this.thousandsSeparator, i) === i && (++s, e && (t += this.thousandsSeparator.length)); return s; } _separatorsCountFromSlice(t) { return ( void 0 === t && (t = this._value), this._separatorsCount(this._removeThousandsSeparators(t).length, !0) ); } extractInput(t, e, s) { return ( void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), ([t, e] = this._adjustRangeWithSeparators(t, e)), this._removeThousandsSeparators(super.extractInput(t, e, s)) ); } _appendCharRaw(t, e) { void 0 === e && (e = {}); const s = e.tail && e._beforeTailState ? e._beforeTailState._value : this._value, i = this._separatorsCountFromSlice(s); this._value = this._removeThousandsSeparators(this.value); const a = this._value; this._value += t; const u = this.number; let n, r = !isNaN(u), h = !1; if (r) { let t; null != this.min && this.min < 0 && this.number < this.min && (t = this.min), null != this.max && this.max > 0 && this.number > this.max && (t = this.max), null != t && (this.autofix ? ((this._value = this.format(t, this).replace( w.UNMASKED_RADIX, this.radix )), h || (h = a === this._value && !e.tail)) : (r = !1)), r && (r = Boolean(this._value.match(this._numberRegExp))); } r ? (n = new v({ inserted: this._value.slice(a.length), rawInserted: h ? "" : t, skip: h, })) : ((this._value = a), (n = new v())), (this._value = this._insertThousandsSeparators(this._value)); const o = e.tail && e._beforeTailState ? e._beforeTailState._value : this._value, l = this._separatorsCountFromSlice(o); return (n.tailShift += (l - i) * this.thousandsSeparator.length), n; } _findSeparatorAround(t) { if (this.thousandsSeparator) { const e = t - this.thousandsSeparator.length + 1, s = this.value.indexOf(this.thousandsSeparator, e); if (s <= t) return s; } return -1; } _adjustRangeWithSeparators(t, e) { const s = this._findSeparatorAround(t); s >= 0 && (t = s); const i = this._findSeparatorAround(e); return i >= 0 && (e = i + this.thousandsSeparator.length), [t, e]; } remove(t, e) { void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length), ([t, e] = this._adjustRangeWithSeparators(t, e)); const s = this.value.slice(0, t), i = this.value.slice(e), a = this._separatorsCount(s.length); this._value = this._insertThousandsSeparators( this._removeThousandsSeparators(s + i) ); const u = this._separatorsCountFromSlice(s); return new v({ tailShift: (u - a) * this.thousandsSeparator.length }); } nearestInputPos(t, e) { if (!this.thousandsSeparator) return t; switch (e) { case a.NONE: case a.LEFT: case a.FORCE_LEFT: { const s = this._findSeparatorAround(t - 1); if (s >= 0) { const i = s + this.thousandsSeparator.length; if (t < i || this.value.length <= i || e === a.FORCE_LEFT) return s; } break; } case a.RIGHT: case a.FORCE_RIGHT: { const e = this._findSeparatorAround(t); if (e >= 0) return e + this.thousandsSeparator.length; } } return t; } doCommit() { if (this.value) { const t = this.number; let e = t; null != this.min && (e = Math.max(e, this.min)), null != this.max && (e = Math.min(e, this.max)), e !== t && (this.unmaskedValue = this.format(e, this)); let s = this.value; this.normalizeZeros && (s = this._normalizeZeros(s)), this.padFractionalZeros && this.scale > 0 && (s = this._padFractionalZeros(s)), (this._value = s); } super.doCommit(); } _normalizeZeros(t) { const e = this._removeThousandsSeparators(t).split(this.radix); return ( (e[0] = e[0].replace(/^(\D*)(0*)(\d*)/, (t, e, s, i) => e + i)), t.length && !/\d$/.test(e[0]) && (e[0] = e[0] + "0"), e.length > 1 && ((e[1] = e[1].replace(/0*$/, "")), e[1].length || (e.length = 1)), this._insertThousandsSeparators(e.join(this.radix)) ); } _padFractionalZeros(t) { if (!t) return t; const e = t.split(this.radix); return ( e.length < 2 && e.push(""), (e[1] = e[1].padEnd(this.scale, "0")), e.join(this.radix) ); } doSkipInvalid(t, e, s) { void 0 === e && (e = {}); const i = 0 === this.scale && t !== this.thousandsSeparator && (t === this.radix || t === w.UNMASKED_RADIX || this.mapToRadix.includes(t)); return super.doSkipInvalid(t, e, s) && !i; } get unmaskedValue() { return this._removeThousandsSeparators( this._normalizeZeros(this.value) ).replace(this.radix, w.UNMASKED_RADIX); } set unmaskedValue(t) { super.unmaskedValue = t; } get typedValue() { return this.parse(this.unmaskedValue, this); } set typedValue(t) { this.rawInputValue = this.format(t, this).replace( w.UNMASKED_RADIX, this.radix ); } get number() { return this.typedValue; } set number(t) { this.typedValue = t; } get allowNegative() { return ( (null != this.min && this.min < 0) || (null != this.max && this.max < 0) ); } get allowPositive() { return ( (null != this.min && this.min > 0) || (null != this.max && this.max > 0) ); } typedValueEquals(t) { return ( (super.typedValueEquals(t) || (w.EMPTY_VALUES.includes(t) && w.EMPTY_VALUES.includes(this.typedValue))) && !(0 === t && "" === this.value) ); } } (T = w), (w.UNMASKED_RADIX = "."), (w.EMPTY_VALUES = [...C.EMPTY_VALUES, 0]), (w.DEFAULTS = { ...C.DEFAULTS, mask: Number, radix: ",", thousandsSeparator: "", mapToRadix: [T.UNMASKED_RADIX], min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER, scale: 2, normalizeZeros: !0, padFractionalZeros: !1, parse: Number, format: (t) => t.toLocaleString("en-US", { useGrouping: !1, maximumFractionDigits: 20, }), }), (o.MaskedNumber = w); const R = { MASKED: "value", UNMASKED: "unmaskedValue", TYPED: "typedValue" }; function P(t, e, s) { void 0 === e && (e = R.MASKED), void 0 === s && (s = R.MASKED); const i = d(t); return (t) => i.runIsolated((i) => ((i[e] = t), i[s])); } function O(t, e, s, i) { return P(e, s, i)(t); } (o.PIPE_TYPE = R), (o.createPipe = P), (o.pipe = O); class L extends b { get repeatFrom() { var t; return null != (t = Array.isArray(this.repeat) ? this.repeat[0] : this.repeat === 1 / 0 ? 0 : this.repeat) ? t : 0; } get repeatTo() { var t; return null != (t = Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) ? t : 1 / 0; } constructor(t) { super(t); } updateOptions(t) { super.updateOptions(t); } _update(t) { var e, s, i; const { repeat: a, ...u } = p(t); this._blockOpts = Object.assign({}, this._blockOpts, u); const n = d(this._blockOpts); (this.repeat = null != (e = null != (s = null != a ? a : n.repeat) ? s : this.repeat) ? e : 1 / 0), super._update({ mask: "m".repeat( Math.max( (this.repeatTo === 1 / 0 && (null == (i = this._blocks) ? void 0 : i.length)) || 0, this.repeatFrom ) ), blocks: { m: n }, eager: n.eager, overwrite: n.overwrite, skipInvalid: n.skipInvalid, lazy: n.lazy, placeholderChar: n.placeholderChar, displayChar: n.displayChar, }); } _allocateBlock(t) { return t < this._blocks.length ? this._blocks[t] : this.repeatTo === 1 / 0 || this._blocks.length < this.repeatTo ? (this._blocks.push(d(this._blockOpts)), (this.mask += "m"), this._blocks[this._blocks.length - 1]) : void 0; } _appendCharRaw(t, e) { void 0 === e && (e = {}); const s = new v(); for ( let r, h, o = null != (i = null == (a = this._mapPosToBlock(this.displayValue.length)) ? void 0 : a.index) ? i : Math.max(this._blocks.length - 1, 0); (r = null != (u = this._blocks[o]) ? u : (h = !h && this._allocateBlock(o))); ++o ) { var i, a, u, n; const l = r._appendChar(t, { ...e, _beforeTailState: null == (n = e._beforeTailState) || null == (n = n._blocks) ? void 0 : n[o], }); if (l.skip && h) { this._blocks.pop(), (this.mask = this.mask.slice(1)); break; } if ((s.aggregate(l), l.consumed)) break; } return s; } _trimEmptyTail(t, e) { var s, i; void 0 === t && (t = 0); const a = Math.max( (null == (s = this._mapPosToBlock(t)) ? void 0 : s.index) || 0, this.repeatFrom, 0 ); let u; null != e && (u = null == (i = this._mapPosToBlock(e)) ? void 0 : i.index), null == u && (u = this._blocks.length - 1); let n = 0; for (let t = u; a <= t && !this._blocks[t].unmaskedValue; --t, ++n); n && (this._blocks.splice(u - n + 1, n), (this.mask = this.mask.slice(n))); } reset() { super.reset(), this._trimEmptyTail(); } remove(t, e) { void 0 === t && (t = 0), void 0 === e && (e = this.displayValue.length); const s = super.remove(t, e); return this._trimEmptyTail(t, e), s; } totalInputPositions(t, e) { return ( void 0 === t && (t = 0), null == e && this.repeatTo === 1 / 0 ? 1 / 0 : super.totalInputPositions(t, e) ); } get state() { return super.state; } set state(t) { (this._blocks.length = t._blocks.length), (this.mask = this.mask.slice(0, this._blocks.length)), (super.state = t); } } o.RepeatBlock = L; try { globalThis.IMask = o; } catch {} (t.ChangeDetails = v), (t.ChunksTailDetails = A), (t.DIRECTION = a), (t.HTMLContenteditableMaskElement = m), (t.HTMLInputMaskElement = k), (t.HTMLMaskElement = g), (t.InputMask = f), (t.MaskElement = c), (t.Masked = C), (t.MaskedDate = y), (t.MaskedDynamic = M), (t.MaskedEnum = I), (t.MaskedFunction = V), (t.MaskedNumber = w), (t.MaskedPattern = b), (t.MaskedRange = D), (t.MaskedRegExp = B), (t.PIPE_TYPE = R), (t.PatternFixedDefinition = x), (t.PatternInputDefinition = S), (t.RepeatBlock = L), (t.createMask = d), (t.createPipe = P), (t.default = o), (t.forceDirection = u), (t.normalizeOpts = p), (t.pipe = O), Object.defineProperty(t, "__esModule", { value: !0 }); }); //# sourceMappingURL=imask.min.js.map