{"version":3,"file":"60.3f887cbf017498d15355.js","mappings":"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","sources":["webpack://silverstripe-base/./node_modules/imask/esm/core/holder.js","webpack://silverstripe-base/./node_modules/imask/esm/core/utils.js","webpack://silverstripe-base/./node_modules/imask/esm/core/action-details.js","webpack://silverstripe-base/./node_modules/imask/esm/controls/mask-element.js","webpack://silverstripe-base/./node_modules/imask/esm/controls/html-mask-element.js","webpack://silverstripe-base/./node_modules/imask/esm/controls/html-input-mask-element.js","webpack://silverstripe-base/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://silverstripe-base/./node_modules/imask/esm/controls/input.js","webpack://silverstripe-base/./node_modules/imask/esm/masked/factory.js"],"sourcesContent":["/** 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","/** 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","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 { 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"],"names":["IMask","el","opts","InputMask","isString","str","String","isObject","obj","_obj$constructor","constructor","name","pick","keys","Array","isArray","_","k","includes","Object","entries","reduce","acc","_ref","v","DIRECTION","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","forceDirection","direction","escapeRegExp","replace","objectIncludes","b","a","arrA","arrB","i","length","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","prototype","hasOwnProperty","call","ActionDetails","assign","this","value","slice","startChangePos","oldValue","oldSelection","start","Math","min","cursorPos","insertedCount","inserted","substr","removedCount","max","end","removed","head","substring","tail","removeDirection","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","HTMLMaskElement","input","super","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","document","activeElement","bindEvents","handlers","forEach","event","_toggleEventHandler","EVENTS_MAP","unbindEvents","handler","removeEventListener","addEventListener","selectionChange","drop","click","focus","commit","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_saveSelection","bind","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","mask","_this$masked","Masked","updateOptions","unmaskedValue","updateControl","typedValue","val","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","e","listeners","l","_cursorChanging","_changingCursorPos","pos","console","warn","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","push","off","hIndex","indexOf","splice","details","oldRawValue","rawInputValue","offset","raw","doCommit","preventDefault","stopPropagation","destroy","maskedClass","Error","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Function","MaskedFunction","normalizeOpts","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass"],"sourceRoot":""}