{ "version": 3, "sources": ["../../../node_modules/imask/esm/core/utils.js", "../../../node_modules/imask/esm/core/action-details.js", "../../../node_modules/imask/esm/core/holder.js", "../../../node_modules/imask/esm/masked/factory.js", "../../../node_modules/imask/esm/controls/mask-element.js", "../../../node_modules/imask/esm/controls/html-mask-element.js", "../../../node_modules/imask/esm/controls/html-input-mask-element.js", "../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js", "../../../node_modules/imask/esm/controls/input.js", "../../../node_modules/imask/esm/core/change-details.js", "../../../node_modules/imask/esm/core/continuous-tail-details.js", "../../../node_modules/imask/esm/masked/base.js", "../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js", "../../../node_modules/imask/esm/masked/pattern/cursor.js", "../../../node_modules/imask/esm/masked/pattern/fixed-definition.js", "../../../node_modules/imask/esm/masked/pattern/input-definition.js", "../../../node_modules/imask/esm/masked/regexp.js", "../../../node_modules/imask/esm/masked/pattern.js", "../../../node_modules/imask/esm/masked/range.js", "../../../node_modules/imask/esm/masked/date.js", "../../../node_modules/imask/esm/masked/dynamic.js", "../../../node_modules/imask/esm/masked/enum.js", "../../../node_modules/imask/esm/masked/function.js", "../../../node_modules/imask/esm/masked/number.js", "../../../node_modules/imask/esm/masked/pipe.js", "../../../node_modules/imask/esm/index.js", "../../javascript/field_mask_loader.ts", "../../javascript/apply_masks.js"], "sourcesContent": ["/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n", "import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n", "/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n", "import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask, ReturnMasked extends Masked=InstanceType> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDate=MaskedDate> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedNumber=MaskedNumber> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedEnum=MaskedEnum> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRange=MaskedRange> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedPattern=MaskedPattern> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedDynamic=MaskedDynamic> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask, ReturnMasked=Opts extends MaskedOptions ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedRegExp=MaskedRegExp> (opts: Opts): ReturnMasked;\n// export default function createMask, ReturnMasked extends MaskedFunction=MaskedFunction> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n", "import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\n\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n", "import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\n/** Mapping between HTMLElement events and mask internal events */\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n", "import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n", "import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n", "import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n", "import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n", "/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n", "import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n", "import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n", "import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n", "import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n", "import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n '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]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n", "import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n", "import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n", "import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n", "import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n", "import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = void 0;\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n", "import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n", "import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n", "import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n", "import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n", "export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n", "export class FieldMaskLoader {\n private static get_mask(type: string): string | {mask: string, overwrite: boolean}[] {\n enum types {cpf, phone}\n const masks = [\n '000.000.000-00',\n [\n { mask: '+55 00 0000-0000', overwrite: true },\n { mask: '+55 00 00000-0000', overwrite: true }\n ]\n ];\n\n return masks[types[type]];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static setup_mask(document: Document, id: string, type: string, IMask: any, laziness = false): void {\n const field = document.getElementById(id);\n const maskOptions = { mask: this.get_mask(type), lazy: laziness };\n IMask(field, maskOptions);\n }\n}\n", "import IMask from 'imask';\nimport {FieldMaskLoader} from \"./field_mask_loader\";\n\nvar cpfField = document.getElementById('user_cpf');\nvar phoneField = document.getElementById('user_mobile_phone_number');\n\nif (cpfField) {\n FieldMaskLoader.setup_mask(document, 'user_cpf', 'cpf', IMask, true);\n}\n\nif (phoneField) {\n FieldMaskLoader.setup_mask(document, 'user_mobile_phone_number', 'phone', IMask, true);\n}\n"], "mappings": "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", "names": ["bName", "fromPos", "toPos", "types", "document", "IMask"] }