PluginProbe
Booking Calendar / 11.8
Booking Calendar v11.8
11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 All 204 releases
booking / vendors / imask / dist / imask.cjs.map

imask.cjs.map in Booking Calendar 11.8, at vendors/imask/dist/imask.cjs.map

1 lines 292.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {"version":3,"file":"imask.cjs","sources":["../src/core/utils.ts","../src/core/action-details.ts","../src/core/holder.ts","../src/masked/factory.ts","../src/controls/mask-element.ts","../src/controls/html-mask-element.ts","../src/controls/html-input-mask-element.ts","../src/controls/html-contenteditable-mask-element.ts","../src/controls/input-history.ts","../src/controls/input.ts","../src/core/change-details.ts","../src/core/continuous-tail-details.ts","../src/masked/base.ts","../src/masked/pattern/chunk-tail-details.ts","../src/masked/pattern/cursor.ts","../src/masked/pattern/fixed-definition.ts","../src/masked/pattern/input-definition.ts","../src/masked/regexp.ts","../src/masked/pattern.ts","../src/masked/range.ts","../src/masked/date.ts","../src/masked/dynamic.ts","../src/masked/enum.ts","../src/masked/function.ts","../src/masked/number.ts","../src/masked/pipe.ts","../src/masked/repeat.ts","../src/index.ts"],"sourcesContent":["/** Checks if value is string */\nexport\nfunction isString (str: unknown): str is string {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nexport\nfunction isObject (obj: unknown): obj is object {\n return typeof obj === 'object' && obj != null && obj?.constructor?.name === 'Object';\n}\n\nexport\nfunction pick<T extends Record<string, any>, K extends keyof T, V extends T[keyof T]> (\n obj: T,\n keys: K[] | ((v: V, k: K) => boolean),\n): Pick<T, K> {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return (Object.entries(obj) as unknown as Array<[K, V]>)\n .reduce((acc, [k, v]) => {\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {} as any);\n}\n\n/** Direction */\nexport\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT',\n} as const;\n\n/** Direction */\nexport\ntype Direction = typeof DIRECTION[keyof typeof DIRECTION];\n\nexport\nfunction forceDirection (direction: Direction): 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 */\nexport\nfunction escapeRegExp (str: string): string {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nexport\nfunction objectIncludes (b: any, a: any): boolean {\n if (a === b) return true;\n\n const arrA = Array.isArray(a), arrB = Array.isArray(b);\n let i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date, dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\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++)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString()\n }\n\n return false;\n}\n\n/** Selection range */\nexport\ntype Selection = {\n start: number;\n end: number;\n};\n","import { type Direction, type Selection, DIRECTION } from './utils';\n\nexport\ntype ActionDetailsOptions = Pick<ActionDetails,\n | 'value'\n | 'cursorPos'\n | 'oldValue'\n | 'oldSelection'\n>;\n\n\n/** Provides details of changing input */\nexport default\nclass ActionDetails {\n /** Current input value */\n declare value: string;\n /** Current cursor position */\n declare cursorPos: number;\n /** Old input value */\n declare oldValue: string;\n /** Old selection */\n declare oldSelection: Selection;\n\n constructor (opts: ActionDetailsOptions) {\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 if (this.insertedCount) {\n // double check right part\n while (this.value.slice(this.cursorPos) !== this.oldValue.slice(this.oldSelection.end)) {\n if (this.value.length - this.cursorPos < this.oldValue.length - this.oldSelection.end) ++this.oldSelection.end;\n else ++this.cursorPos;\n }\n }\n }\n\n /** Start changing position */\n get startChangePos (): number {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount (): number {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted (): string {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount (): number {\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 (): string {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head (): string {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail (): string {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection (): Direction {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (\n (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\n ) ?\n DIRECTION.RIGHT :\n DIRECTION.LEFT;\n }\n}\n","import type { default as _InputMask, InputMaskElement as _InputMaskElement } from '../controls/input';\nimport type { default as _Masked } from '../masked/base';\nimport type { default as _MaskedPattern } from '../masked/pattern';\nimport type { default as _RepeatBlock } from '../masked/repeat';\nimport type { default as _MaskedDate } from '../masked/date';\nimport type { default as _MaskedDynamic } from '../masked/dynamic';\nimport type { default as _MaskedEnum } from '../masked/enum';\nimport type { default as _MaskedRange } from '../masked/range';\nimport type { default as _MaskedNumber } from '../masked/number';\nimport type { default as _MaskedFunction } from '../masked/function';\nimport type { default as _MaskedRegExp } from '../masked/regexp';\nimport type {\n default as _createMask,\n FactoryArg,\n} from '../masked/factory';\nimport type { default as _ChangeDetails } from './change-details';\n\nimport type { default as _MaskElement } from '../controls/mask-element';\nimport type { default as _HTMLMaskElement } from '../controls/html-mask-element';\nimport type { default as _HTMLContenteditableMaskElement } from '../controls/html-contenteditable-mask-element';\nimport type {\n createPipe as _createPipe,\n pipe as _pipe,\n PIPE_TYPE as _PIPE_TYPE\n} from '../masked/pipe';\n\n\n/** Applies mask on element */\nfunction IMask<Opts extends FactoryArg> (el: _InputMaskElement, opts: Opts): _InputMask<Opts> {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace IMask {\n export let InputMask: typeof _InputMask;\n export let createMask: typeof _createMask;\n export let Masked: typeof _Masked;\n export let MaskedPattern: typeof _MaskedPattern;\n export let RepeatBlock: typeof _RepeatBlock;\n export let MaskedDate: typeof _MaskedDate;\n export let MaskedDynamic: typeof _MaskedDynamic;\n export let MaskedEnum: typeof _MaskedEnum;\n export let MaskedRange: typeof _MaskedRange;\n export let MaskedNumber: typeof _MaskedNumber;\n export let MaskedFunction: typeof _MaskedFunction;\n export let MaskedRegExp: typeof _MaskedRegExp;\n export let ChangeDetails: typeof _ChangeDetails;\n export let MaskElement: typeof _MaskElement;\n export let HTMLMaskElement: typeof _HTMLMaskElement;\n export let HTMLContenteditableMaskElement: typeof _HTMLContenteditableMaskElement;\n export let createPipe: typeof _createPipe;\n export let pipe: typeof _pipe;\n export let PIPE_TYPE: typeof _PIPE_TYPE;\n}\n\nexport default IMask;\n","import { isString, pick, isObject } from '../core/utils';\nimport type Masked from './base';\nimport { type MaskedOptions } from './base';\nimport IMask from '../core/holder';\n\nimport type MaskedRegExp from './regexp';\nimport type MaskedPattern from './pattern';\nimport type MaskedFunction from './function';\nimport type MaskedDate from './date';\nimport type MaskedNumber from './number';\nimport type MaskedDynamic from './dynamic';\nimport type MaskedRange from './range';\nimport type MaskedEnum from './enum';\n\nimport { type MaskedEnumOptions } from './enum';\nimport { type MaskedRangeOptions } from './range';\nimport { type MaskedDynamicOptions } from './dynamic';\nimport { type MaskedPatternOptions } from './pattern';\nimport { type MaskedNumberOptions } from './number';\nimport { type MaskedRegExpOptions } from './regexp';\nimport { type MaskedFunctionOptions } from './function';\nimport { type MaskedDateOptions } from './date';\n\ntype MaskedDateFactoryOptions = Omit<MaskedDateOptions, 'mask'> & { mask: DateConstructor };\n\nexport\ntype FactoryStaticOpts =\n | MaskedDateFactoryOptions\n | MaskedNumberOptions\n | MaskedPatternOptions\n | MaskedDynamicOptions\n | MaskedRegExpOptions\n | MaskedFunctionOptions\n;\n\nexport\ntype AllFactoryStaticOpts =\n & MaskedDateFactoryOptions\n & MaskedNumberOptions\n & MaskedPatternOptions\n & MaskedDynamicOptions\n & MaskedRegExpOptions\n & MaskedFunctionOptions\n & MaskedEnumOptions\n & MaskedRangeOptions\n;\n\nexport\ntype FactoryStaticReturnMasked<Opts extends FactoryStaticOpts> =\n Opts extends MaskedDateFactoryOptions ? MaskedDate :\n Opts extends MaskedNumberOptions ? MaskedNumber :\n Opts extends MaskedPatternOptions ? MaskedPattern :\n Opts extends MaskedDynamicOptions ? MaskedDynamic :\n Opts extends MaskedRegExpOptions ? MaskedRegExp :\n Opts extends MaskedFunctionOptions ? MaskedFunction :\n never\n;\n\nexport\ntype FactoryStaticMaskReturnMasked<Mask extends FactoryStaticOpts['mask']> =\n Mask extends MaskedDateFactoryOptions['mask'] ? MaskedDate :\n Mask extends MaskedNumberOptions['mask'] ? MaskedNumber :\n Mask extends MaskedPatternOptions['mask'] ? MaskedPattern :\n Mask extends MaskedDynamicOptions['mask'] ? MaskedDynamic :\n Mask extends MaskedRegExpOptions['mask'] ? MaskedRegExp :\n Mask extends MaskedFunctionOptions['mask'] ? MaskedFunction :\n never\n;\n\n\nexport\ntype FactoryInstanceOpts =\n | { mask: MaskedDate } & Omit<MaskedDateFactoryOptions, 'mask'>\n | { mask: MaskedNumber } & Omit<MaskedNumberOptions, 'mask'>\n | { mask: MaskedEnum } & Omit<MaskedEnumOptions, 'mask'>\n | { mask: MaskedRange } & Omit<MaskedRangeOptions, 'mask'>\n | { mask: MaskedRegExp } & Omit<MaskedRegExpOptions, 'mask'>\n | { mask: MaskedFunction } & Omit<MaskedFunctionOptions, 'mask'>\n | { mask: MaskedPattern } & Omit<MaskedPatternOptions, 'mask'>\n | { mask: MaskedDynamic } & Omit<MaskedDynamicOptions, 'mask'>\n | { mask: Masked } & Omit<MaskedOptions, 'mask'>\n;\n\nexport\ntype FactoryInstanceReturnMasked<Opts extends FactoryInstanceOpts> = Opts extends { mask: infer M } ? M : never;\n\nexport\ntype FactoryConstructorOpts =\n | { mask: typeof MaskedDate } & Omit<MaskedDateFactoryOptions, 'mask'>\n | { mask: typeof MaskedNumber } & Omit<MaskedNumberOptions, 'mask'>\n | { mask: typeof MaskedEnum } & Omit<MaskedEnumOptions, 'mask'>\n | { mask: typeof MaskedRange } & Omit<MaskedRangeOptions, 'mask'>\n | { mask: typeof MaskedRegExp } & Omit<MaskedRegExpOptions, 'mask'>\n | { mask: typeof MaskedFunction } & Omit<MaskedFunctionOptions, 'mask'>\n | { mask: typeof MaskedPattern } & Omit<MaskedPatternOptions, 'mask'>\n | { mask: typeof MaskedDynamic } & Omit<MaskedDynamicOptions, 'mask'>\n | { mask: typeof Masked } & Omit<MaskedOptions, 'mask'>\n;\n \nexport\ntype FactoryConstructorReturnMasked<Opts extends FactoryConstructorOpts> =\n Opts extends { mask: typeof MaskedDate } ? MaskedDate :\n Opts extends { mask: typeof MaskedNumber } ? MaskedNumber :\n Opts extends { mask: typeof MaskedEnum } ? MaskedEnum :\n Opts extends { mask: typeof MaskedRange } ? MaskedRange :\n Opts extends { mask: typeof MaskedRegExp } ? MaskedRegExp :\n Opts extends { mask: typeof MaskedFunction } ? MaskedFunction :\n Opts extends { mask: typeof MaskedPattern } ? MaskedPattern :\n Opts extends { mask: typeof MaskedDynamic } ? MaskedDynamic :\n Masked\n;\n\nexport\ntype FactoryOpts = FactoryConstructorOpts | FactoryInstanceOpts | FactoryStaticOpts;\n\nexport\ntype FactoryArg = Masked | FactoryOpts | FactoryStaticOpts['mask'];\n\nexport\ntype ExtendFactoryArgOptions<Opts extends { [key: string]: any }> =\n Masked | FactoryOpts & Opts | FactoryStaticOpts['mask']\n;\n\nexport\ntype UpdateStaticOpts<Opts extends FactoryStaticOpts> =\n Opts extends MaskedEnumOptions ? MaskedEnumOptions :\n Opts extends MaskedRangeOptions ? MaskedRangeOptions :\n Opts extends MaskedDynamicOptions ? MaskedDynamicOptions :\n Opts extends MaskedPatternOptions ? MaskedPatternOptions :\n Opts extends MaskedDateOptions ? MaskedDateOptions :\n Opts extends MaskedNumberOptions ? MaskedNumberOptions :\n Opts extends MaskedRegExpOptions ? MaskedRegExpOptions :\n Opts extends MaskedFunctionOptions ? MaskedFunctionOptions :\n never\n;\n\ntype AnyOpts = Record<string, any>;\n\nexport\ntype UpdateInstanceOpts<M extends Masked> =\n M extends MaskedRegExp ? MaskedRegExpOptions :\n M extends MaskedFunction ? MaskedFunctionOptions :\n M extends MaskedDate ? MaskedDateOptions :\n M extends MaskedNumber ? MaskedNumberOptions :\n M extends MaskedDynamic ? MaskedDynamicOptions :\n M extends MaskedRange ? MaskedRangeOptions :\n M extends MaskedEnum ? MaskedEnumOptions :\n M extends MaskedPattern ? MaskedPatternOptions :\n AnyOpts\n;\n\nexport\ntype UpdateConstructorOpts<M extends FactoryConstructorOpts> =\n M extends { mask: typeof MaskedDate } ? MaskedDateOptions :\n M extends { mask: typeof MaskedNumber } ? MaskedNumberOptions :\n M extends { mask: typeof MaskedEnum } ? MaskedEnumOptions :\n M extends { mask: typeof MaskedRange } ? MaskedRangeOptions :\n M extends { mask: typeof MaskedRegExp } ? MaskedRegExpOptions :\n M extends { mask: typeof MaskedFunction } ? MaskedFunctionOptions :\n M extends { mask: typeof MaskedPattern } ? MaskedPatternOptions :\n M extends { mask: typeof MaskedDynamic } ? MaskedDynamicOptions :\n AnyOpts\n;\n\nexport\ntype UpdateStaticMaskOpts<M extends FactoryStaticOpts['mask']> =\n M extends MaskedDateFactoryOptions['mask'] ? MaskedDateOptions :\n M extends MaskedNumberOptions['mask'] ? MaskedNumberOptions :\n M extends MaskedPatternOptions['mask'] ? MaskedPatternOptions :\n M extends MaskedDynamicOptions['mask'] ? MaskedDynamicOptions :\n M extends MaskedRegExpOptions['mask'] ? MaskedRegExpOptions :\n M extends MaskedFunctionOptions['mask'] ? MaskedFunctionOptions :\n never\n;\n\nexport\ntype UpdateOpts<Opts extends FactoryArg> = Partial<\n Opts extends Masked ? UpdateInstanceOpts<Opts> :\n Opts extends FactoryStaticOpts['mask'] ? UpdateStaticMaskOpts<Opts> :\n Opts extends FactoryStaticOpts ? UpdateStaticOpts<Opts> :\n Opts extends FactoryInstanceOpts ? UpdateInstanceOpts<Opts['mask']> :\n Opts extends FactoryConstructorOpts ? UpdateConstructorOpts<Opts> :\n AnyOpts\n>;\n\nexport\ntype FactoryReturnMasked<Opts extends FactoryArg> =\n Opts extends Masked ? Opts :\n Opts extends FactoryStaticOpts['mask'] ? FactoryStaticMaskReturnMasked<Opts> :\n Opts extends FactoryConstructorOpts ? FactoryConstructorReturnMasked<Opts> :\n Opts extends FactoryInstanceOpts ? FactoryInstanceReturnMasked<Opts> :\n Opts extends FactoryStaticOpts ? FactoryStaticReturnMasked<Opts> :\n never\n;\n\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<any> | 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 extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n\n/** Get Masked class by mask type */\nexport function maskedClass (mask: Masked | FactoryOpts['mask']): any /* TODO */ {\n if (mask == null) throw new Error('mask property should be defined');\n\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 as any).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\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\n\ntype MaskedClassOf<M extends Masked> =\n M extends MaskedDate ? typeof MaskedDate :\n M extends MaskedNumber ? typeof MaskedNumber :\n M extends MaskedEnum ? typeof MaskedEnum :\n M extends MaskedRange ? typeof MaskedRange :\n M extends MaskedRegExp ? typeof MaskedRegExp :\n M extends MaskedFunction ? typeof MaskedFunction :\n M extends MaskedPattern ? typeof MaskedPattern :\n M extends MaskedDynamic ? typeof MaskedDynamic :\n any\n;\n\n\ntype NormalizedMaskedOpts<Opts extends Masked> = Omit<Opts, 'mask'> & {\n _mask: Opts,\n mask: MaskedClassOf<Opts>,\n};\n\ntype NormalizedInstanceOpts<Opts extends FactoryInstanceOpts> =\n Omit<Opts['mask'], `_${string}` | 'mask'> &\n NormalizedMaskedOpts<Opts['mask']>\n;\n\nexport\ntype NormalizedOpts<Opts extends FactoryArg> =\n Opts extends FactoryStaticOpts['mask'] ? { mask: Opts } :\n Opts extends Masked ? NormalizedMaskedOpts<Opts> :\n Opts extends FactoryInstanceOpts ? NormalizedInstanceOpts<Opts> :\n Opts extends FactoryStaticOpts | FactoryConstructorOpts ? Opts :\n { mask: Opts }\n;\n\nexport\nfunction normalizeOpts<Opts extends FactoryArg> (opts: Opts): NormalizedOpts<Opts> {\n if (!opts) throw new Error('Options in not defined');\n\n if (IMask.Masked) {\n if ((opts as any).prototype instanceof IMask.Masked) return { mask: opts } as NormalizedOpts<Opts>;\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const { mask=undefined, ...instanceOpts } =\n opts instanceof IMask.Masked ? { mask: opts } :\n isObject(opts) && (opts as FactoryInstanceOpts).mask instanceof IMask.Masked ? (opts as FactoryInstanceOpts) : {};\n\n if (mask) {\n const _mask = (mask as Masked).mask;\n\n return {\n ...pick(mask, (_, k: string) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts,\n } as NormalizedOpts<Opts>;\n }\n }\n\n if (!isObject(opts)) return { mask: opts } as unknown as NormalizedOpts<Opts>;\n\n return { ...opts } as unknown as NormalizedOpts<Opts>;\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 extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nexport default\nfunction createMask<Opts extends FactoryArg> (opts: Opts): FactoryReturnMasked<Opts> {\n if (IMask.Masked && (opts instanceof IMask.Masked)) return opts as FactoryReturnMasked<Opts>;\n const nOpts = normalizeOpts(opts);\n\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error(`Masked class is not found for provided mask ${nOpts.mask}, appropriate module needs to be imported manually before creating mask.`);\n\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if ((nOpts as any)._mask) { nOpts.mask = (nOpts as any)._mask; delete (nOpts as any)._mask; }\n return new MaskedClass(nOpts);\n}\n\n\nIMask.createMask = createMask;\n","import IMask from '../core/holder';\n\n\nexport\ntype ElementEvent =\n | 'selectionChange'\n | 'input'\n | 'drop'\n | 'click'\n | 'focus'\n | 'commit'\n;\n\nexport\ntype EventHandlers = { [key in ElementEvent]: (...args: any[]) => void } & {\n undo?: (...args: any[]) => void;\n redo?: (...args: any[]) => void;\n}\n\n/** Generic element API to use with mask */\nexport default\nabstract class MaskElement {\n /** */\n abstract _unsafeSelectionStart: number | null;\n /** */\n abstract _unsafeSelectionEnd: number | null;\n /** */\n abstract value: string;\n\n /** Safely returns selection start */\n get selectionStart (): number {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n\n return start != null ?\n start :\n this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd (): number {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n\n return end != null ?\n end :\n this.value.length;\n }\n\n /** Safely sets element selection */\n select (start: number, end: number) {\n if (start == null || end == null ||\n start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive (): boolean { return false; }\n /** */\n abstract _unsafeSelect (start: number, end: number): void;\n /** */\n abstract bindEvents (handlers: EventHandlers): void;\n /** */\n abstract unbindEvents (): void\n}\n\n\nIMask.MaskElement = MaskElement;\n","import MaskElement, { EventHandlers } from './mask-element';\nimport IMask from '../core/holder';\n\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nexport default\nabstract class HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n declare input: HTMLElement;\n declare _handlers: EventHandlers;\n abstract value: string;\n\n constructor (input: HTMLElement) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n\n get rootElement (): HTMLDocument {\n return (this.input.getRootNode?.() ?? document) as HTMLDocument;\n }\n\n /** Is element in focus */\n get isActive (): boolean {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n override bindEvents (handlers: EventHandlers) {\n this.input.addEventListener('keydown', this._onKeydown as EventListener);\n this.input.addEventListener('input', this._onInput as EventListener);\n this.input.addEventListener('beforeinput', this._onBeforeinput as EventListener);\n this.input.addEventListener('compositionend', this._onCompositionEnd as EventListener);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n\n _onKeydown (e: KeyboardEvent) {\n if (this._handlers.redo && (\n (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey)) ||\n (e.keyCode === KEY_Y && e.ctrlKey)\n )) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n\n _onBeforeinput (e: InputEvent) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n\n _onCompositionEnd (e: CompositionEvent) {\n this._handlers.input(e);\n }\n\n _onInput (e: InputEvent) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n override unbindEvents () {\n this.input.removeEventListener('keydown', this._onKeydown as EventListener);\n this.input.removeEventListener('input', this._onInput as EventListener);\n this.input.removeEventListener('beforeinput', this._onBeforeinput as EventListener);\n this.input.removeEventListener('compositionend', this._onCompositionEnd as EventListener);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {} as EventHandlers;\n }\n}\n\n\nIMask.HTMLMaskElement = HTMLMaskElement;\n","import HTMLMaskElement from './html-mask-element';\nimport IMask from '../core/holder';\n\nexport\ntype InputElement = HTMLTextAreaElement | HTMLInputElement;\n\n/** Bridge between InputElement and {@link Masked} */\nexport default\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n declare input: InputElement;\n\n constructor (input: InputElement) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n override get _unsafeSelectionStart (): number | null {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n override get _unsafeSelectionEnd (): number | null {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect (start: number, end: number) {\n this.input.setSelectionRange(start, end);\n }\n\n override get value (): string {\n return this.input.value;\n }\n override set value (value: string) {\n this.input.value = value;\n }\n}\n\n\nIMask.HTMLMaskElement = HTMLMaskElement;\n","import HTMLMaskElement from './html-mask-element';\nimport IMask from '../core/holder';\n\n\nexport default\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n declare input: HTMLElement;\n /** Returns HTMLElement selection start */\n override get _unsafeSelectionStart (): number | null {\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 override get _unsafeSelectionEnd (): number | null {\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 override _unsafeSelect (start: number, end: number) {\n if (!this.rootElement.createRange) return;\n\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 override get value (): string {\n return this.input.textContent || '';\n }\n override set value (value: string) {\n this.input.textContent = value;\n }\n}\n\n\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n","import { type Selection } from '../core/utils';\n\n\nexport\ntype InputHistoryState = {\n unmaskedValue: string,\n selection: Selection,\n};\n\n\nexport default\nclass InputHistory {\n static MAX_LENGTH = 100;\n states: InputHistoryState[] = [];\n currentIndex = 0;\n\n get currentState (): InputHistoryState | undefined {\n return this.states[this.currentIndex];\n }\n\n get isEmpty (): boolean {\n return this.states.length === 0;\n }\n\n push (state: InputHistoryState) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n\n go (steps: number): InputHistoryState | undefined {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n\n undo () {\n return this.go(-1);\n }\n\n redo () {\n return this.go(+1);\n }\n\n clear () {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\n","import { DIRECTION, type Selection } from '../core/utils';\nimport ActionDetails from '../core/action-details';\nimport createMask, { type UpdateOpts, maskedClass, type FactoryArg, type FactoryReturnMasked } from '../masked/factory';\nimport Masked from '../masked/base';\nimport MaskElement from './mask-element';\nimport HTMLInputMaskElement, { type InputElement } from './html-input-mask-element';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element';\nimport IMask from '../core/holder';\nimport InputHistory, { type InputHistoryState } from './input-history';\n\n\nexport\ntype InputMaskElement = MaskElement | InputElement | HTMLElement;\n\nexport\ntype InputMaskEventListener = (e?: InputEvent) => void;\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nexport default\nclass InputMask<Opts extends FactoryArg=Record<string, unknown>> {\n /**\n View element\n */\n declare el: MaskElement;\n\n /** Internal {@link Masked} model */\n declare masked: FactoryReturnMasked<Opts>;\n\n declare _listeners: Record<string, Array<InputMaskEventListener>>;\n declare _value: string;\n declare _changingCursorPos: number;\n declare _unmaskedValue: string;\n declare _rawInputValue: string;\n declare _selection: Selection;\n declare _cursorChanging?: ReturnType<typeof setTimeout>;\n declare _historyChanging?: boolean;\n declare _inputEvent?: InputEvent;\n declare history: InputHistory;\n\n constructor (el: InputMaskElement, opts: Opts) {\n this.el =\n (el instanceof MaskElement) ? el :\n (el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA') ? new HTMLContenteditableMaskElement(el) :\n new HTMLInputMaskElement(el as InputElement);\n\n this.masked = createMask(opts);\n\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n\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._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n maskEquals (mask: any): boolean {\n return mask == null || this.masked?.maskEquals(mask);\n }\n\n /** Masked */\n get mask (): FactoryReturnMasked<Opts>['mask'] {\n return this.masked.mask;\n }\n set mask (mask: any) {\n if (this.maskEquals(mask)) return;\n\n if (!((mask as Masked) instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask as Masked)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({ mask } as any);\n return;\n }\n\n const masked = (mask instanceof IMask.Masked ? mask : createMask({ mask } as Opts)) as FactoryReturnMasked<Opts>;\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value (): string {\n return this._value;\n }\n\n set value (str: string) {\n if (this.value === str) return;\n\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue (): string {\n return this._unmaskedValue;\n }\n\n set unmaskedValue (str: string) {\n if (this.unmaskedValue === str) return;\n\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue (): string {\n return this._rawInputValue;\n }\n\n set rawInputValue (str: string) {\n if (this.rawInputValue === str) return;\n\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue (): FactoryReturnMasked<Opts>['typedValue'] {\n return this.masked.typedValue;\n }\n\n set typedValue (val: FactoryReturnMasked<Opts>['typedValue']) {\n if (this.masked.typedValueEquals(val)) return;\n\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue (): string {\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 undo: this._onUndo,\n redo: this._onRedo,\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: string, e?: InputEvent) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart (): number {\n return this._cursorChanging ?\n this._changingCursorPos :\n\n this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos (): number {\n return this._cursorChanging ?\n this._changingCursorPos :\n\n this.el.selectionEnd;\n }\n set cursorPos (pos: number) {\n if (!this.el || !this.el.isActive) return;\n\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection (/* ev */) {\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 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 this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl (cursorPos?: number | 'auto') {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n\n const isChanged =\n this.unmaskedValue !== newUnmaskedValue ||\n this.value !== newValue ||\n this._rawInputValue !== newRawInputValue\n ;\n\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n\n if (cursorPos === 'auto') this.alignCursor();\n else if (cursorPos != null) this.cursorPos = cursorPos;\n\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: { start: this.selectionStart, end: this.cursorPos },\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts: UpdateOpts<Opts>) {\n const { mask, ...restOpts } = opts as any; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n\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: number) {\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: number) {\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: string, handler: InputMaskEventListener): this {\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: string, handler: InputMaskEventListener): this {\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: InputEvent): void {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection,\n });\n\n const oldRawValue = this.masked.rawInputValue;\n\n const offset = this.masked.splice(\n details.startChangePos,\n details.removed.length,\n details.inserted,\n details.removeDirection,\n { input: true, 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 ?\n details.removeDirection :\n DIRECTION.NONE;\n\n let cursorPos = this.masked.nearestInputPos(\n details.startChangePos + offset,\n removeDirection,\n );\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n\n this.updateControl(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) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop (ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus (ev: Event) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick (ev: Event) {\n this.alignCursorFriendly();\n }\n\n _onUndo () {\n this._applyHistoryState(this.history.undo());\n }\n\n _onRedo () {\n this._applyHistoryState(this.history.redo());\n }\n\n _applyHistoryState (state: InputHistoryState | undefined) {\n if (!state) return;\n\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy () {\n this._unbindEvents();\n (this._listeners as any).length = 0;\n delete (this as any).el;\n }\n}\n\n\nIMask.InputMask = InputMask;\n","import IMask from \"./holder\";\n\n\nexport\ntype ChangeDetailsOptions = Pick<ChangeDetails,\n | 'inserted'\n | 'tailShift'\n | 'rawInserted'\n | 'skip'\n>;\n\n/** Provides details of changing model value */\nexport default\nclass ChangeDetails {\n /** Inserted symbols */\n declare inserted: string;\n /** Additional offset if any changes occurred before tail */\n declare tailShift: number;\n /** Raw inserted is used by dynamic mask */\n declare rawInserted: string;\n /** Can skip chars */\n declare skip: boolean;\n\n\n static normalize (prep: string | [string, ChangeDetails]): [string, ChangeDetails] {\n return Array.isArray(prep) ? prep : [\n prep,\n new ChangeDetails(),\n ];\n }\n\n constructor (details?: Partial<ChangeDetailsOptions>) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n tailShift: 0,\n skip: false,\n }, details);\n }\n\n /** Aggregate changes */\n aggregate (details: ChangeDetails): this {\n this.inserted += details.inserted;\n this.rawInserted += details.rawInserted;\n this.tailShift += details.tailShift;\n this.skip = this.skip || details.skip;\n\n return this;\n }\n\n /** Total offset considering all changes */\n get offset (): number {\n return this.tailShift + this.inserted.length;\n }\n\n get consumed (): boolean {\n return Boolean(this.rawInserted) || this.skip;\n }\n\n equals (details: ChangeDetails): boolean {\n return this.inserted === details.inserted &&\n this.tailShift === details.tailShift &&\n this.rawInserted === details.rawInserted &&\n this.skip === details.skip\n ;\n }\n}\n\n\nIMask.ChangeDetails = ChangeDetails;\n","import type { TailDetails, AppendTail } from './tail-details';\nimport type ChangeDetails from './change-details';\n\n\ntype ContinuousTailState = Pick<ContinuousTailDetails,\n | 'value'\n | 'from'\n | 'stop'\n>;\n\n/** Provides details of continuous extracted tail */\nexport default\nclass ContinuousTailDetails implements TailDetails {\n /** Tail value as string */\n declare value: string;\n /** Tail start position */\n declare from: number;\n /** Start position */\n declare stop?: number;\n\n constructor (value: string='', from: number=0, stop?: number) {\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n toString (): string { return this.value; }\n\n extend (tail: string | TailDetails): void {\n this.value += String(tail);\n }\n\n appendTo (masked: AppendTail): ChangeDetails {\n return masked.append(this.toString(), { tail: true })\n .aggregate(masked._appendPlaceholder());\n }\n\n get state (): ContinuousTailState {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop,\n };\n }\n\n set state (state: ContinuousTailState) {\n Object.assign(this, state);\n }\n\n unshift (beforePos?: number): string {\n if (!this.value.length || (beforePos != null && this.from >= beforePos)) return '';\n\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n\n shift (): string {\n if (!this.value.length) return '';\n\n const shiftChar = this.value[this.value.length-1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n","import ChangeDetails from '../core/change-details';\nimport ContinuousTailDetails from '../core/continuous-tail-details';\nimport { type Direction, DIRECTION, isString, forceDirection, objectIncludes } from '../core/utils';\nimport { type TailDetails } from '../core/tail-details';\nimport IMask from '../core/holder';\n\n\nexport\ntype MaskedState = {\n _value: string,\n _rawInputValue: string,\n};\n\n/** Append flags */\nexport\ntype AppendFlags<State=MaskedState> = {\n input?: boolean,\n tail?: boolean,\n raw?: boolean,\n _beforeTailState?: State,\n};\n\n/** Extract flags */\nexport\ntype ExtractFlags = {\n raw?: boolean\n};\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\nexport\ntype MaskedOptions<M extends Masked=Masked, Props extends keyof M=never> = Partial<Pick<M,\n | 'mask'\n | 'parent'\n | 'prepare'\n | 'prepareChar'\n | 'validate'\n | 'commit'\n | 'format'\n | 'parse'\n | 'overwrite'\n | 'eager'\n | 'skipInvalid'\n | 'autofix'\n | Props\n>>;\n\n\n/** Provides common masking stuff */\nexport default\nabstract class Masked<Value=any> {\n static DEFAULTS: Pick<MaskedOptions, 'skipInvalid'> = {\n skipInvalid: true,\n };\n static EMPTY_VALUES: Array<any> = [undefined, null, ''];\n\n /** */\n declare mask: unknown;\n /** */\n declare parent?: Masked;\n /** Transforms value before mask processing */\n declare prepare?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];\n /** Transforms each char before mask processing */\n declare prepareChar?: (chars: string, masked: Masked, flags: AppendFlags) => string | [string, ChangeDetails];\n /** Validates if value is acceptable */\n declare validate?: (value: string, masked: Masked, flags: AppendFlags) => boolean;\n /** Does additional processing at the end of editing */\n declare commit?: (value: string, masked: Masked) => void;\n /** Format typed value to string */\n declare format?: (value: Value, masked: Masked) => string;\n /** Parse string to get typed value */\n declare parse?: (str: string, masked: Masked) => Value;\n /** Enable characters overwriting */\n abstract overwrite?: boolean | 'shift' | undefined;\n /** */\n abstract eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n abstract skipInvalid?: boolean | undefined;\n /** */\n abstract autofix?: boolean | 'pad' | undefined;\n\n /** */\n declare _initialized: boolean;\n\n declare _value: string;\n declare _refreshing?: boolean;\n declare _isolated?: boolean;\n\n constructor (opts: MaskedOptions) {\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: Partial<MaskedOptions>) {\n if (!this.optionsIsChanged(opts)) return;\n\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update (opts: Partial<MaskedOptions>) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state (): MaskedState {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n };\n }\n\n set state (state: MaskedState) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset () {\n this._value = '';\n }\n\n get value (): string {\n return this._value;\n }\n\n set value (value: string) {\n this.resolve(value, { input: true });\n }\n\n /** Resolve new value */\n resolve (value: string, flags: AppendFlags={ input: true }): void {\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n\n get unmaskedValue (): string {\n return this.value;\n }\n\n set unmaskedValue (value: string) {\n this.resolve(value, {});\n }\n\n get typedValue (): Value {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue as Value;\n }\n\n set typedValue (value: 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 (): string {\n return this.extractInput(0, this.displayValue.length, {raw: true});\n }\n\n set rawInputValue (value: string) {\n this.resolve(value, { raw: true });\n }\n\n get displayValue (): string {\n return this.value;\n }\n\n get isComplete (): boolean {\n return true;\n }\n\n get isFilled (): boolean {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos (cursorPos: number, direction?: Direction): number {\n return cursorPos;\n }\n\n totalInputPositions (fromPos: number=0, toPos: number=this.displayValue.length): number {\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput (fromPos: number=0, toPos: number=this.displayValue.length, flags?: ExtractFlags): string {\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail (fromPos: number=0, toPos: number=this.displayValue.length): TailDetails {\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail (tail: string | String | TailDetails): ChangeDetails {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n\n return (tail as TailDetails).appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw (ch: string, flags: AppendFlags={}): ChangeDetails {\n if (!ch) return new ChangeDetails();\n\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch,\n });\n }\n\n /** Appends char */\n _appendChar (ch: string, flags: AppendFlags={}, checkTail?: TailDetails): ChangeDetails {\n const consistentState = this.state;\n let details: ChangeDetails;\n [ch, details] = this.doPrepareChar(ch, flags);\n\n if (ch) {\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n // TODO handle `skip`?\n\n // try `autofix` lookahead\n if (!details.rawInserted && this.autofix === 'pad') {\n const noFixState = this.state;\n this.state = consistentState;\n\n let fixDetails = this.pad(flags);\n const chDetails = this._appendCharRaw(ch, flags);\n fixDetails = fixDetails.aggregate(chDetails);\n\n // if fix was applied or\n // if details are equal use skip restoring state optimization\n if (chDetails.rawInserted || fixDetails.equals(details)) {\n details = fixDetails;\n } else {\n this.state = noFixState;\n }\n }\n }\n\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n\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 for (let i=0; i < details.rawInserted.length; ++i) {\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n }\n\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n for (let i=0; i < details.rawInserted.length; ++i) {\n checkTail.shift();\n }\n\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted.length === checkTail.toString().length;\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 (): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager (): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append (str: string, flags?: AppendFlags, tail?: string | String | TailDetails): ChangeDetails {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail as TailDetails;\n if (flags?.tail) flags._beforeTailState = this.state;\n\n let details;\n [str, details] = this.doPrepare(str, flags);\n\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\n if ((this.eager === true || this.eager === 'append') && 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\n remove (fromPos: number=0, toPos: number=this.displayValue.length): ChangeDetails {\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<T>(fn: () => T): T {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n\n const rawInput = this.rawInputValue;\n const value = this.value;\n\n const ret = fn();\n\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 this.doCommit();\n }\n\n delete this._refreshing;\n return ret;\n }\n\n runIsolated<T>(fn: (masked: this) => T): T {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n\n const ret = fn(this);\n\n this.state = state;\n delete this._isolated;\n\n return ret;\n }\n\n doSkipInvalid (ch: string, flags: AppendFlags={}, checkTail?: TailDetails): boolean {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare (str: string, flags: AppendFlags={}): [string, ChangeDetails] {\n return ChangeDetails.normalize(this.prepare ?\n this.prepare(str, this, flags) :\n str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar (str: string, flags: AppendFlags={}): [string, ChangeDetails] {\n return ChangeDetails.normalize(this.prepareChar ?\n this.prepareChar(str, this, flags) :\n str);\n }\n\n /** Validates if value is acceptable */\n doValidate (flags: AppendFlags): boolean {\n return (!this.validate || this.validate(this.value, this, flags)) &&\n (!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\n splice (start: number, deleteCount: number, inserted='', removeDirection: Direction = DIRECTION.NONE, flags: AppendFlags = { input: true }): ChangeDetails {\n const tailPos: number = start + deleteCount;\n const tail: TailDetails = this.extractTail(tailPos);\n\n const eagerRemove = this.eager === true || this.eager === 'remove';\n\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {raw: true});\n }\n\n let startChangePos: number = start;\n const details: ChangeDetails = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start,\n deleteCount > 1 && start !== 0 && !eagerRemove ?\n DIRECTION.NONE :\n removeDirection\n );\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n\n details.aggregate(this.remove(startChangePos));\n\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\n .aggregate(new ChangeDetails({ tailShift: -1 }))\n .aggregate(this.remove(valLength-1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n\n return details.aggregate(this.append(inserted, flags, tail));\n }\n\n maskEquals (mask: any): boolean {\n return this.mask === mask;\n }\n\n optionsIsChanged (opts: Partial<MaskedOptions>): boolean {\n return !objectIncludes(this, opts);\n }\n\n typedValueEquals (value: any): boolean {\n const tval = this.typedValue;\n\n return value === tval ||\n Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) ||\n (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n\n pad (flags?: AppendFlags): ChangeDetails {\n return new ChangeDetails();\n }\n}\n\n\nIMask.Masked = Masked;\n","import type { TailDetails, AppendTail } from '../../core/tail-details';\nimport ChangeDetails from '../../core/change-details';\nimport { isString } from '../../core/utils';\nimport ContinuousTailDetails from '../../core/continuous-tail-details';\nimport IMask from '../../core/holder';\nimport type MaskedPattern from '../pattern';\n\n\nexport\ntype ChunksTailState = Pick<ChunksTailDetails,\n | 'from'\n | 'stop'\n | 'blockIndex'\n> & { chunks: Array<TailDetails['state']> };\n\nexport default\nclass ChunksTailDetails implements TailDetails {\n declare chunks: Array<TailDetails>;\n declare from: number;\n declare stop?: number;\n /** */\n declare blockIndex?: number;\n\n constructor (chunks: Array<TailDetails>=[], from: number=0) {\n this.chunks = chunks;\n this.from = from;\n }\n\n toString (): string {\n return this.chunks.map(String).join('');\n }\n\n extend (tailChunk: string | String | TailDetails): void {\n if (!String(tailChunk)) return;\n tailChunk = (isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk) as TailDetails;\n\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\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() as TailDetails; // 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\n appendTo (masked: AppendTail | MaskedPattern): ChangeDetails {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n const details = new ChangeDetails();\n\n for (let ci=0; ci < this.chunks.length; ++ci) {\n const chunk = this.chunks[ci];\n\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 ) {\n if (\n chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0\n ) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n details.aggregate(tailDetails);\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, { tail: true }));\n } else {\n details.aggregate(masked.append(chunk.toString(), { tail: true }));\n }\n }\n\n return details;\n }\n\n get state (): ChunksTailState {\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\n set state (state: ChunksTailState) {\n const { chunks, ...props } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ?\n new ChunksTailDetails() :\n new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n\n unshift (beforePos?: number): string {\n if (!this.chunks.length || (beforePos != null && this.from >= beforePos)) return '';\n\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\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\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n\n shift (): string {\n if (!this.chunks.length) return '';\n\n let ci=this.chunks.length-1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n\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\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n}\n","import { DIRECTION } from '../../core/utils';\nimport type MaskedPattern from '../pattern';\nimport type PatternBlock from './block';\n\n\ntype PatternCursorState = { offset: number, index: number, ok: boolean };\n\nexport default\nclass PatternCursor<Value> {\n declare masked: MaskedPattern<Value>;\n declare offset: number;\n declare index: number;\n declare ok: boolean;\n declare _log: PatternCursorState[];\n\n constructor (masked: MaskedPattern<Value>, pos: number) {\n this.masked = masked;\n this._log = [];\n\n const { offset, index } = masked._mapPosToBlock(pos) || (\n pos < 0 ?\n // first\n { index: 0, offset: 0 } :\n // last\n { index: this.masked._blocks.length, offset: 0 }\n );\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n\n get block (): PatternBlock {\n return this.masked._blocks[this.index];\n }\n\n get pos (): number {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n\n get state (): PatternCursorState {\n return { index: this.index, offset: this.offset, ok: this.ok };\n }\n\n set state (s: PatternCursorState) {\n Object.assign(this, s);\n }\n\n pushState () {\n this._log.push(this.state);\n }\n\n popState (): PatternCursorState | undefined {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\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 as unknown as PatternBlock).displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn: () => boolean | undefined): boolean {\n this.pushState();\n for (this.bindBlock(); 0<=this.index; --this.index, this.offset=this.block?.displayValue.length || 0) {\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n\n _pushRight (fn: () => boolean | undefined): boolean {\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\n return this.ok = false;\n }\n\n pushLeftBeforeFilled (): boolean {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n\n pushLeftBeforeInput (): boolean {\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\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n\n pushLeftBeforeRequired (): boolean {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n\n pushRightBeforeFilled (): boolean {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n\n pushRightBeforeInput (): boolean {\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 // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n\n pushRightBeforeRequired (): boolean {\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","import ChangeDetails from '../../core/change-details';\nimport { DIRECTION, type Direction, isString } from '../../core/utils';\nimport { type TailDetails } from '../../core/tail-details';\nimport ContinuousTailDetails from '../../core/continuous-tail-details';\nimport { type ExtractFlags, type AppendFlags, type MaskedState } from '../base';\nimport type PatternBlock from './block';\n\n\nexport\ntype PatternFixedDefinitionOptions = Pick<PatternFixedDefinition, 'char' | 'isUnmasking' | 'eager'>;\n\n\nexport default\nclass PatternFixedDefinition implements PatternBlock {\n /** */\n declare _value: string;\n /** */\n declare char: string;\n /** */\n declare isUnmasking?: boolean;\n /** */\n declare eager: boolean | 'remove' | 'append' | undefined;\n /** */\n declare _isRawInput?: boolean;\n /** */\n declare isFixed: boolean;\n\n constructor(opts: PatternFixedDefinitionOptions) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n\n get value (): string {\n return this._value;\n }\n\n get unmaskedValue (): string {\n return this.isUnmasking ? this.value : '';\n }\n\n get rawInputValue (): string {\n return this._isRawInput ? this.value : '';\n }\n\n get displayValue (): string {\n return this.value;\n }\n\n reset () {\n this._isRawInput = false;\n this._value = '';\n }\n\n remove (fromPos: number=0, toPos: number=this._value.length): ChangeDetails {\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n\n return new ChangeDetails();\n }\n\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n const minPos = 0;\n const maxPos = this._value.length;\n\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\n totalInputPositions (fromPos: number=0, toPos: number=this._value.length): number {\n return this._isRawInput ? (toPos - fromPos) : 0;\n }\n\n extractInput (fromPos: number=0, toPos: number=this._value.length, flags: ExtractFlags={}): string {\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n\n get isComplete (): boolean {\n return true;\n }\n\n get isFilled (): boolean {\n return Boolean(this._value);\n }\n\n _appendChar (ch: string, flags: AppendFlags={}): ChangeDetails {\n if (this.isFilled) return new ChangeDetails();\n const appendEager = this.eager === true || this.eager === 'append';\n\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n const details = new ChangeDetails({\n inserted: this.char,\n rawInserted: isResolved ? this.char: '',\n })\n this._value = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n\n return details;\n }\n\n _appendEager (): ChangeDetails {\n return this._appendChar(this.char, { tail: true });\n }\n\n _appendPlaceholder (): ChangeDetails {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n\n this._value = details.inserted = this.char;\n return details;\n }\n\n extractTail (): TailDetails {\n return new ContinuousTailDetails('');\n }\n\n appendTail (tail: string | String | TailDetails): ChangeDetails {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n\n return (tail as TailDetails).appendTo(this);\n }\n\n append (str: string, flags?: AppendFlags, tail?: TailDetails): ChangeDetails {\n const details = this._appendChar(str[0], flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n\n doCommit () {}\n\n get state (): MaskedState {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue,\n };\n }\n\n set state (state: MaskedState) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n\n pad (flags?: AppendFlags): ChangeDetails {\n return this._appendPlaceholder();\n }\n}\n","import createMask, { type FactoryArg, type FactoryOpts, type FactoryReturnMasked } from '../factory';\nimport type Masked from '../base';\nimport type MaskedPattern from '../pattern';\nimport { type TailDetails } from '../../core/tail-details';\nimport { type ExtractFlags, type AppendFlags, type MaskedState } from '../base';\nimport ChangeDetails from '../../core/change-details';\nimport { DIRECTION, type Direction } from '../../core/utils';\nimport type PatternBlock from './block';\n\n\nexport\ntype PatternInputDefinitionOptions<Opts extends FactoryOpts> =\n Omit<Opts,\n | 'parent'\n | 'isOptional'\n | 'lazy'\n | 'eager'\n | 'placeholderChar'\n | 'displayChar'> &\n Partial<Pick<PatternInputDefinition,\n | 'parent'\n | 'isOptional'\n | 'lazy'\n | 'eager'\n | 'placeholderChar'\n | 'displayChar'\n>>;\n\nexport\ntype PatternInputDefinitionState<Opts extends FactoryArg> = MaskedState & {\n masked: FactoryReturnMasked<Opts>['state'],\n isFilled: boolean,\n};\n\n\nexport default\nclass PatternInputDefinition<Opts extends FactoryOpts=any> implements PatternBlock<PatternInputDefinitionState<Opts>> {\n static DEFAULT_DEFINITIONS: { [k: string]: RegExp } = {\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]/, // http://stackoverflow.com/a/22075070\n '*': /./\n }\n\n /** */\n declare readonly masked: FactoryReturnMasked<Opts>;\n /** */\n declare parent: Masked;\n /** */\n declare isOptional: boolean;\n /** */\n declare isFilled: boolean;\n /** */\n declare lazy: MaskedPattern['lazy'];\n /** */\n declare eager: MaskedPattern['eager'];\n /** */\n declare placeholderChar: MaskedPattern['placeholderChar'];\n /** */\n declare displayChar: MaskedPattern['displayChar'];\n\n\n constructor(opts: PatternInputDefinitionOptions<Opts>) {\n const { parent, isOptional, placeholderChar, displayChar, lazy, eager, ...maskOpts } = opts;\n\n this.masked = createMask(maskOpts as Opts);\n Object.assign(this, { parent, isOptional, placeholderChar, displayChar, lazy, eager });\n }\n\n reset () {\n this.isFilled = false;\n this.masked.reset();\n }\n\n remove (fromPos: number=0, toPos: number=this.value.length): ChangeDetails {\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n\n get value (): string {\n return this.masked.value ||\n (this.isFilled && !this.isOptional ?\n this.placeholderChar :\n '');\n }\n\n get unmaskedValue (): string {\n return this.masked.unmaskedValue;\n }\n\n get rawInputValue (): string {\n return this.masked.rawInputValue;\n }\n\n get displayValue (): string {\n return this.masked.value && this.displayChar || this.value;\n }\n\n get isComplete (): boolean {\n return Boolean(this.masked.value) || this.isOptional;\n }\n\n _appendChar (ch: string, flags: AppendFlags<PatternInputDefinitionState<Opts>>={}): ChangeDetails {\n if (this.isFilled) return new ChangeDetails();\n\n const state = this.masked.state;\n // simulate input\n let details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n\n if (details.inserted && this.doValidate(flags) === false) {\n details = new ChangeDetails();\n this.masked.state = state;\n }\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\n return details;\n }\n\n append (str: string, flags?: AppendFlags<PatternInputDefinitionState<Opts>>, tail?: TailDetails): ChangeDetails {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n\n _appendPlaceholder (): ChangeDetails {\n if (this.isFilled || this.isOptional) return new ChangeDetails();\n\n this.isFilled = true;\n return new ChangeDetails({ inserted: this.placeholderChar });\n }\n\n _appendEager (): ChangeDetails {\n return new ChangeDetails();\n }\n\n extractTail (fromPos?: number, toPos?: number): TailDetails {\n return this.masked.extractTail(fromPos, toPos);\n }\n\n appendTail (tail: string | TailDetails): ChangeDetails {\n return this.masked.appendTail(tail);\n }\n\n extractInput (fromPos: number=0, toPos: number=this.value.length, flags?: ExtractFlags): string {\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\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: return boundPos;\n }\n }\n\n totalInputPositions (fromPos: number=0, toPos: number=this.value.length): number {\n return this.value.slice(fromPos, toPos).length;\n }\n\n doValidate (flags: AppendFlags<PatternInputDefinitionState<Opts>>): boolean {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (\n !this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n\n doCommit () {\n this.masked.doCommit();\n }\n\n get state (): PatternInputDefinitionState<Opts> {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled,\n };\n }\n\n set state (state: PatternInputDefinitionState<Opts>) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n\n currentMaskFlags (flags?: AppendFlags<PatternInputDefinitionState<Opts>>): AppendFlags {\n return {\n ...flags,\n _beforeTailState: flags?._beforeTailState?.masked || flags?._beforeTailState as unknown as MaskedState,\n };\n }\n\n pad (flags?: AppendFlags): ChangeDetails {\n return new ChangeDetails();\n }\n}\n","import Masked, { type MaskedOptions } from './base';\nimport IMask from '../core/holder';\n\n\nexport\ntype MaskedRegExpOptions = MaskedOptions<MaskedRegExp>;\n\n/** Masking by RegExp */\nexport default\nclass MaskedRegExp extends Masked<string> {\n /** */\n declare mask: RegExp;\n /** Enable characters overwriting */\n declare overwrite?: boolean | 'shift' | undefined;\n /** */\n declare eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n declare skipInvalid?: boolean | undefined;\n /** */\n declare autofix?: boolean | 'pad' | undefined;\n\n override updateOptions (opts: Partial<MaskedRegExpOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedRegExpOptions>) {\n const mask = opts.mask;\n if (mask) opts.validate = (value) => value.search(mask) >= 0;\n super._update(opts);\n }\n}\n\n\nIMask.MaskedRegExp = MaskedRegExp;\n","import ChangeDetails from '../core/change-details';\nimport IMask from '../core/holder';\nimport { type TailDetails } from '../core/tail-details';\nimport { DIRECTION, type Direction } from '../core/utils';\nimport Masked, { type AppendFlags, type ExtractFlags, type MaskedOptions, type MaskedState } from './base';\nimport createMask, { type FactoryArg, normalizeOpts, type ExtendFactoryArgOptions, NormalizedOpts } from './factory';\nimport type PatternBlock from './pattern/block';\nimport ChunksTailDetails from './pattern/chunk-tail-details';\nimport PatternCursor from './pattern/cursor';\nimport PatternFixedDefinition from './pattern/fixed-definition';\nimport PatternInputDefinition from './pattern/input-definition';\nimport './regexp'; // support for default definitions which are regexp's\n\n\nexport\ntype MaskedPatternOptions<\n Value=string,\n M extends MaskedPattern<Value>=MaskedPattern<Value>,\n Props extends keyof M=never,\n> = MaskedOptions<M,\n | 'definitions'\n | 'blocks'\n | 'placeholderChar'\n | 'displayChar'\n | 'lazy'\n | Props\n>;\n\nexport\ntype Definitions = {\n [k: string]: FactoryArg,\n};\n\nexport\ntype MaskedPatternState = MaskedState & {\n _blocks: Array<MaskedState>,\n};\n\nexport\ntype BlockPosData = {\n index: number,\n offset: number,\n};\n\nexport\ntype BlockExtraOptions = {\n expose?: boolean,\n repeat?: number | [number, number],\n};\n\n\n/** Pattern mask */\nexport default\nclass MaskedPattern<Value=string> extends Masked<Value> {\n static DEFAULTS = {\n ...Masked.DEFAULTS,\n lazy: true,\n placeholderChar: '_'\n };\n static STOP_CHAR = '`';\n static ESCAPE_CHAR = '\\\\';\n static InputDefinition = PatternInputDefinition;\n static FixedDefinition = PatternFixedDefinition;\n\n declare mask: string;\n /** */\n declare blocks: { [key: string]: ExtendFactoryArgOptions<BlockExtraOptions> };\n /** */\n declare definitions: Definitions;\n /** Single char for empty input */\n declare placeholderChar: string;\n /** Single char for filled input */\n declare displayChar: string;\n /** Show placeholder only when needed */\n declare lazy: boolean;\n /** Enable characters overwriting */\n declare overwrite?: boolean | 'shift' | undefined;\n /** */\n declare eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n declare skipInvalid?: boolean | undefined;\n /** */\n declare autofix?: boolean | 'pad' | undefined;\n\n declare _blocks: Array<PatternBlock>;\n declare _maskedBlocks: {[key: string]: Array<number>};\n declare _stops: Array<number>;\n declare exposeBlock?: Masked;\n\n constructor (opts: MaskedPatternOptions<Value>) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts?.definitions),\n } as MaskedOptions);\n }\n\n override updateOptions (opts: Partial<MaskedPatternOptions<Value>>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedPatternOptions<Value>>) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n _rebuildMask () {\n const defs = this.definitions;\n this._blocks = []; this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n\n const pattern = this.mask;\n if (!pattern || !defs) return;\n\n let unmaskingBlock = false;\n let optionalBlock = false;\n\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 { expose, repeat, ...bOpts } = normalizeOpts(this.blocks[bName]) as NormalizedOpts<FactoryArg> & BlockExtraOptions; // TODO type Opts<Arg & Extra>\n const blockOpts = {\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n autofix: this.autofix,\n ...bOpts,\n repeat,\n parent: this,\n };\n const maskedBlock = repeat != null ? new IMask.RepeatBlock(blockOpts as any /* TODO */) : createMask(blockOpts);\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\n i += bName.length - 1;\n continue;\n }\n }\n\n let char = pattern[i];\n let isInput = char in defs;\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n\n const def = isInput ?\n 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 }) as PatternBlock :\n new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock,\n });\n\n this._blocks.push(def);\n }\n }\n\n override get state (): MaskedPatternState {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state),\n };\n }\n\n override set state (state: MaskedPatternState) {\n if (!state) { this.reset(); return; }\n\n const { _blocks, ...maskedState } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n\n override reset () {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n\n override get isComplete (): boolean {\n return this.exposeBlock ? this.exposeBlock.isComplete :\n this._blocks.every(b => b.isComplete);\n }\n\n override get isFilled (): boolean {\n return this._blocks.every(b => b.isFilled);\n }\n\n get isFixed (): boolean {\n return this._blocks.every(b => b.isFixed);\n }\n\n get isOptional (): boolean {\n return this._blocks.every(b => b.isOptional);\n }\n\n override doCommit () {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n\n override get unmaskedValue (): string {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue :\n this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n\n override set unmaskedValue (unmaskedValue: string) {\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 }\n else super.unmaskedValue = unmaskedValue;\n }\n\n override get value (): string {\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\n override set value (value: string) {\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 }\n else super.value = value;\n }\n\n override get typedValue (): Value {\n return this.exposeBlock ? this.exposeBlock.typedValue :\n super.typedValue;\n }\n\n override set typedValue (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.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n }\n else super.typedValue = value;\n }\n\n override get displayValue (): string {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n\n override appendTail (tail: string | String | TailDetails): ChangeDetails {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n override _appendEager (): ChangeDetails {\n const details = new ChangeDetails();\n\n let startBlockIndex = this._mapPosToBlock(this.displayValue.length)?.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\n for (let bi=startBlockIndex; bi<this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n\n details.aggregate(d);\n }\n\n return details;\n }\n\n override _appendCharRaw (ch: string, flags: AppendFlags<MaskedPatternState>={}): ChangeDetails {\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (let bi=blockIter.index, block; (block = this._blocks[bi]); ++bi) {\n const blockDetails = block._appendChar(ch, { ...flags, _beforeTailState: flags._beforeTailState?._blocks?.[bi] });\n\n details.aggregate(blockDetails);\n\n if (blockDetails.consumed) break; // go next char\n }\n\n return details;\n }\n\n override extractTail (fromPos: number=0, toPos: number=this.displayValue.length): TailDetails {\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\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\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n\n override extractInput (fromPos: number=0, toPos: number=this.displayValue.length, flags: ExtractFlags={}): string {\n if (fromPos === toPos) return '';\n\n let input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n\n _findStopBefore (blockIndex: number): number | undefined {\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;\n else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n override _appendPlaceholder (toBlockIndex?: number): ChangeDetails {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex)\n .forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n details.aggregate(b._appendPlaceholder((b as MaskedPattern)._blocks?.length));\n }\n });\n\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock (pos: number): BlockPosData | undefined {\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\n accVal += block.displayValue;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos,\n };\n }\n }\n }\n\n _blockStartPos (blockIndex: number): number {\n return this._blocks\n .slice(0, blockIndex)\n .reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n\n _forEachBlocksInRange (fromPos: number, toPos: number=this.displayValue.length, fn: (block: PatternBlock, blockIndex: number, fromPos: number, toPos: number) => void) {\n const fromBlockIter = this._mapPosToBlock(fromPos);\n\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 ?\n toBlockIter.offset :\n this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\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\n override remove (fromPos: number=0, toPos: number=this.displayValue.length): ChangeDetails {\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\n override nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n\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\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n\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\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n\n return cursorPos;\n }\n\n override totalInputPositions (fromPos: number=0, toPos: number=this.displayValue.length): number {\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: string): PatternBlock | undefined {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks (name: string): Array<PatternBlock> {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n\n override pad (flags?: AppendFlags): ChangeDetails {\n const details = new ChangeDetails();\n this._forEachBlocksInRange(0, this.displayValue.length, b => details.aggregate(b.pad(flags)))\n return details;\n }\n}\n\n\nIMask.MaskedPattern = MaskedPattern;\n","import ChangeDetails from '../core/change-details';\nimport IMask from '../core/holder';\nimport { type AppendFlags } from './base';\nimport MaskedPattern, { MaskedPatternState, type MaskedPatternOptions } from './pattern';\n\n\ntype MaskedRangePatternOptions = MaskedPatternOptions &\n Pick<MaskedRange, 'from' | 'to'> &\n Partial<Pick<MaskedRange, 'maxLength'>>;\n\nexport\ntype MaskedRangeOptions = Omit<MaskedRangePatternOptions, 'mask'>;\n\n\n/** Pattern which accepts ranges */\nexport default\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 declare maxLength: number;\n /** Min bound */\n declare from: number;\n /** Max bound */\n declare to: number;\n\n get _matchFrom (): number {\n return this.maxLength - String(this.from).length;\n }\n\n constructor (opts?: MaskedRangeOptions) {\n super(opts as MaskedPatternOptions); // mask will be created in _update\n }\n\n override updateOptions (opts: Partial<MaskedRangeOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedRangeOptions>) {\n const {\n to=this.to || 0,\n from=this.from || 0,\n maxLength=this.maxLength || 0,\n autofix=this.autofix,\n ...patternOpts\n }: Partial<MaskedRangePatternOptions> = opts;\n\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n\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\n super._update(patternOpts);\n }\n\n override get isComplete (): boolean {\n return super.isComplete && Boolean(this.value);\n }\n\n boundaries (str: string): [string, string] {\n let minstr = '';\n let maxstr = '';\n\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\n return [minstr, maxstr];\n }\n\n override doPrepareChar (ch: string, flags: AppendFlags={}): [string, ChangeDetails] {\n let details: ChangeDetails;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n\n if (!ch) details.skip = !this.isComplete;\n\n return [ch, details];\n }\n\n override _appendCharRaw (ch: string, flags: AppendFlags<MaskedPatternState>={}): ChangeDetails {\n if (!this.autofix || this.value.length + 1 > this.maxLength) return super._appendCharRaw(ch, flags);\n\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n\n const [minstr, maxstr] = this.boundaries(this.value + ch);\n\n if (Number(maxstr) < this.from) return super._appendCharRaw(fromStr[this.value.length], flags);\n\n if (Number(minstr) > this.to) {\n if (!flags.tail && this.autofix === 'pad' && this.value.length + 1 < this.maxLength) {\n return super._appendCharRaw(fromStr[this.value.length], flags).aggregate(this._appendCharRaw(ch, flags));\n }\n return super._appendCharRaw(toStr[this.value.length], flags);\n }\n\n return super._appendCharRaw(ch, flags);\n }\n\n override doValidate (flags: AppendFlags): boolean {\n const str = this.value;\n\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n const [minstr, maxstr] = this.boundaries(str);\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to &&\n super.doValidate(flags);\n }\n\n override pad (flags?: AppendFlags): ChangeDetails {\n const details = new ChangeDetails();\n if (this.value.length === this.maxLength) return details;\n\n const value = this.value;\n const padLength = this.maxLength - this.value.length;\n\n if (padLength) {\n this.reset();\n for (let i=0; i < padLength; ++i) {\n details.aggregate(super._appendCharRaw('0', flags as AppendFlags<MaskedPatternState>));\n }\n\n // append tail\n value.split('').forEach(ch => this._appendCharRaw(ch));\n }\n\n return details;\n }\n}\n\n\nIMask.MaskedRange = MaskedRange;\n","import MaskedPattern, { type MaskedPatternOptions } from './pattern';\nimport { type MaskedRangeOptions } from './range';\nimport MaskedRange from './range';\nimport IMask from '../core/holder';\nimport type Masked from './base';\nimport { type AppendFlags } from './base';\nimport { isString } from '../core/utils';\n\n\nexport\ntype DateMaskType = DateConstructor;\n\ntype DateOptionsKeys =\n | 'pattern'\n | 'min'\n | 'max'\n | 'autofix'\n;\n\nexport\ntype DateValue = Date | null;\n\nconst DefaultPattern = 'd{.}`m{.}`Y'\n\n// Make format and parse required when pattern is provided\ntype RequiredDateOptions = ({ pattern?: never | typeof DefaultPattern; format?: MaskedDate[\"format\"]; parse?: MaskedDate[\"parse\"] } |\n { pattern: MaskedDate[\"pattern\"]; format: MaskedDate[\"format\"]; parse: MaskedDate[\"parse\"] })\n\nexport\ntype MaskedDateOptions =\n Omit<MaskedPatternOptions<DateValue>, 'mask'> &\n Partial<Pick<MaskedDate, DateOptionsKeys>> &\n { mask?: string | DateMaskType } &\n RequiredDateOptions;\n\n/** Date mask */\nexport default\nclass MaskedDate extends MaskedPattern<DateValue> {\n static GET_DEFAULT_BLOCKS: () => { [k: string]: MaskedRangeOptions } = () => ({\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 });\n static DEFAULTS = {\n ...MaskedPattern.DEFAULTS,\n mask: Date,\n pattern: DefaultPattern,\n format: (date: DateValue, masked: Masked): string => {\n if (!date) return '';\n\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\n return [day, month, year].join('.');\n },\n parse: (str: string, masked: Masked): DateValue => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n },\n } satisfies Partial<MaskedDateOptions>;\n\n static extractPatternOptions (opts: Partial<MaskedDateOptions>): Partial<Omit<MaskedDateOptions, 'mask' | 'pattern'> & { mask: MaskedPatternOptions['mask'] }> {\n const { mask, pattern, ...patternOpts } = opts;\n return {\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n };\n }\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n declare pattern: string;\n /** Start date */\n declare min?: Date;\n /** End date */\n declare max?: Date;\n /** Format typed value to string */\n declare format: (value: DateValue, masked: Masked) => string;\n /** Parse string to get typed value */\n declare parse: (str: string, masked: Masked) => DateValue;\n\n\n constructor (opts?: MaskedDateOptions) {\n super(MaskedDate.extractPatternOptions({\n ...(MaskedDate.DEFAULTS as MaskedDateOptions),\n ...opts,\n }));\n }\n\n override updateOptions (opts: Partial<MaskedDateOptions> & RequiredDateOptions) {\n super.updateOptions(opts as Partial<MaskedPatternOptions<DateValue>>);\n }\n\n override _update (opts: Partial<MaskedDateOptions>) {\n const { mask, pattern, blocks, ...patternOpts } = {\n ...MaskedDate.DEFAULTS,\n ...opts,\n };\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 ) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n\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 super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks,\n });\n }\n\n override doValidate (flags: AppendFlags): boolean {\n const date = this.date;\n\n return super.doValidate(flags) &&\n (!this.isComplete ||\n this.isDateExist(this.value) && date != null &&\n (this.min == null || this.min <= date) &&\n (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist (str: string): boolean {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date (): DateValue {\n return this.typedValue;\n }\n set date (date: DateValue) {\n this.typedValue = date;\n }\n\n override get typedValue (): DateValue {\n return this.isComplete ? super.typedValue : null;\n }\n override set typedValue (value: DateValue) {\n super.typedValue = value;\n }\n\n override maskEquals (mask: any): boolean {\n return mask === Date || super.maskEquals(mask);\n }\n\n override optionsIsChanged (opts: Partial<MaskedDateOptions>): boolean {\n return super.optionsIsChanged(MaskedDate.extractPatternOptions(opts));\n }\n}\n\n\nIMask.MaskedDate = MaskedDate;\n","import { objectIncludes } from '../core/utils';\nimport ChangeDetails from '../core/change-details';\nimport createMask, { type FactoryArg, type ExtendFactoryArgOptions, type NormalizedOpts, normalizeOpts } from './factory';\nimport Masked, { type AppendFlags, type MaskedState, type MaskedOptions, type ExtractFlags } from './base';\nimport { DIRECTION, type Direction } from '../core/utils';\nimport { type TailDetails } from '../core/tail-details';\nimport IMask from '../core/holder';\n\n\ntype MaskedDynamicNoRefState = MaskedState & {\n compiledMasks: Array<MaskedState>\n};\n\ntype MaskedDynamicRefState = MaskedDynamicNoRefState & {\n currentMaskRef: Masked,\n currentMask: MaskedState,\n};\n\nexport\ntype MaskedDynamicState = MaskedDynamicNoRefState | MaskedDynamicRefState;\n\nexport\ntype DynamicMaskType = Array<ExtendFactoryArgOptions<{ expose?: boolean }>> | ArrayConstructor;\n\nexport\ntype MaskedDynamicOptions = MaskedOptions<MaskedDynamic, 'dispatch'>;\n\ntype HandleState = MaskedDynamicState | MaskedState;\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nexport default\nclass MaskedDynamic<Value=any> extends Masked<Value> {\n declare mask: DynamicMaskType;\n /** Currently chosen mask */\n declare currentMask?: Masked;\n /** Currently chosen mask */\n declare exposeMask?: Masked;\n /** Compliled {@link Masked} options */\n declare compiledMasks: Array<Masked>;\n /** Chooses {@link Masked} depending on input value */\n declare dispatch: (appended: string, masked: MaskedDynamic, flags: AppendFlags<HandleState>, tail: string | String | TailDetails) => (Masked | undefined);\n\n declare _overwrite?: this['overwrite'];\n declare _eager?: this['eager'];\n declare _skipInvalid?: this['skipInvalid'];\n declare _autofix?: this['autofix'];\n\n static DEFAULTS: typeof Masked.DEFAULTS & Pick<MaskedDynamic, 'dispatch'> = {\n ...Masked.DEFAULTS,\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n\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\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, { raw: true });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(\n 0,\n Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)),\n ),\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n\n return masked.compiledMasks[inputs[0].index];\n }\n };\n\n constructor (opts?: MaskedDynamicOptions) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n\n this.currentMask = undefined;\n }\n\n override updateOptions (opts: Partial<MaskedDynamicOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedDynamicOptions>) {\n super._update(opts);\n\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) ?\n opts.mask.map(m => {\n const { expose, ...maskOpts } = normalizeOpts(m) as NormalizedOpts<FactoryArg> & { expose?: boolean };\n\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts,\n });\n\n if (expose) this.exposeMask = masked;\n\n return masked;\n }) :\n [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n override _appendCharRaw (ch: string, flags: AppendFlags<HandleState>={}): ChangeDetails {\n const details = this._applyDispatch(ch, flags);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n\n return details;\n }\n\n _applyDispatch (appended: string='', flags: AppendFlags<HandleState>={}, tail: string | String | TailDetails = ''): ChangeDetails {\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ?\n flags._beforeTailState._value :\n this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ?\n flags._beforeTailState._rawInputValue :\n inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n\n const prevMaskState = prevMask?.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, { ...flags }, 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\n if (insertValue) {\n this.currentMask.append(insertValue, { raw: true });\n details.tailShift = this.currentMask.value.length - prevValueBeforeTail.length;\n }\n\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, { raw: true, tail: true }).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\n return details;\n }\n\n override _appendPlaceholder (): ChangeDetails {\n const details = this._applyDispatch();\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n\n return details;\n }\n\n override _appendEager (): ChangeDetails {\n const details = this._applyDispatch();\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n\n return details;\n }\n\n override appendTail (tail: string | String | TailDetails): ChangeDetails {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n\n return details.aggregate(this.currentMask ?\n this.currentMask.appendTail(tail) :\n super.appendTail(tail));\n }\n\n currentMaskFlags (flags: AppendFlags<HandleState>): AppendFlags {\n return {\n ...flags,\n _beforeTailState:\n (flags._beforeTailState as MaskedDynamicRefState)?.currentMaskRef === this.currentMask &&\n (flags._beforeTailState as MaskedDynamicRefState)?.currentMask ||\n flags._beforeTailState,\n };\n }\n\n doDispatch(appended: string, flags: AppendFlags<HandleState>={}, tail: string | String | TailDetails=''): Masked | undefined {\n return this.dispatch(appended, this, flags, tail);\n }\n\n override doValidate (flags: AppendFlags<HandleState>): boolean {\n return super.doValidate(flags) && (\n !this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags))\n );\n }\n\n override doPrepare (str: string, flags: AppendFlags<HandleState>={}): [string, ChangeDetails] {\n let [s, details] = super.doPrepare(str, flags);\n\n if (this.currentMask) {\n let currentDetails;\n ([s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags)));\n details = details.aggregate(currentDetails);\n }\n\n return [s, details];\n }\n\n override doPrepareChar (str: string, flags: AppendFlags<HandleState>={}): [string, ChangeDetails] {\n let [s, details] = super.doPrepareChar(str, flags);\n\n if (this.currentMask) {\n let currentDetails;\n ([s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags)));\n details = details.aggregate(currentDetails);\n }\n\n return [s, details];\n }\n\n override reset () {\n this.currentMask?.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n\n override get value (): string {\n return this.exposeMask ? this.exposeMask.value :\n this.currentMask ? this.currentMask.value :\n '';\n }\n\n override set value (value: string) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n }\n else super.value = value;\n }\n\n override get unmaskedValue (): string {\n return this.exposeMask ? this.exposeMask.unmaskedValue :\n this.currentMask ? this.currentMask.unmaskedValue :\n '';\n }\n\n override set unmaskedValue (unmaskedValue: string) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n }\n else super.unmaskedValue = unmaskedValue;\n }\n\n override get typedValue (): Value {\n return this.exposeMask ? this.exposeMask.typedValue :\n this.currentMask ? this.currentMask.typedValue :\n '';\n }\n\n override set typedValue (typedValue: Value) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\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\n override get displayValue (): string {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n\n override get isComplete (): boolean {\n return Boolean(this.currentMask?.isComplete);\n }\n\n override get isFilled (): boolean {\n return Boolean(this.currentMask?.isFilled);\n }\n\n override remove (fromPos?: number, toPos?: number): ChangeDetails {\n const details: ChangeDetails = new ChangeDetails();\n\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n\n override get state (): MaskedDynamicState {\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: this.currentMask?.state,\n };\n }\n\n override set state (state: HandleState) {\n const { compiledMasks, currentMaskRef, currentMask, ...maskedState } = state as MaskedDynamicRefState;\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\n override extractInput (fromPos?: number, toPos?: number, flags?: ExtractFlags): string {\n return this.currentMask ?\n this.currentMask.extractInput(fromPos, toPos, flags) :\n '';\n }\n\n override extractTail (fromPos?: number, toPos?: number): TailDetails {\n return this.currentMask ?\n this.currentMask.extractTail(fromPos, toPos) :\n super.extractTail(fromPos, toPos);\n }\n\n override doCommit () {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n\n override nearestInputPos(cursorPos: number, direction?: Direction): number {\n return this.currentMask ?\n this.currentMask.nearestInputPos(cursorPos, direction) :\n super.nearestInputPos(cursorPos, direction);\n }\n\n override get overwrite (): boolean | 'shift' | undefined {\n return this.currentMask ?\n this.currentMask.overwrite :\n this._overwrite;\n }\n\n override set overwrite (overwrite: boolean | 'shift' | undefined) {\n this._overwrite = overwrite;\n }\n\n override get eager (): boolean | 'remove' | 'append' | undefined {\n return this.currentMask ?\n this.currentMask.eager :\n this._eager;\n }\n\n override set eager (eager: boolean | 'remove' | 'append' | undefined) {\n this._eager = eager;\n }\n\n override get skipInvalid (): boolean | undefined {\n return this.currentMask ?\n this.currentMask.skipInvalid :\n this._skipInvalid;\n }\n\n override set skipInvalid (skipInvalid: boolean | undefined) {\n this._skipInvalid = skipInvalid;\n }\n\n override get autofix (): boolean | 'pad' | undefined {\n return this.currentMask ?\n this.currentMask.autofix :\n this._autofix;\n }\n\n override set autofix (autofix: boolean | 'pad' | undefined) {\n this._autofix = autofix;\n }\n\n override maskEquals (mask: any): boolean {\n return Array.isArray(mask) ?\n this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n\n const { mask: oldMask, ...restOpts } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n\n override typedValueEquals (value: any): boolean {\n return Boolean(this.currentMask?.typedValueEquals(value));\n }\n}\n\n\nIMask.MaskedDynamic = MaskedDynamic;\n","import MaskedPattern, { MaskedPatternState, type MaskedPatternOptions } from './pattern';\nimport { AppendFlags } from './base';\nimport IMask from '../core/holder';\nimport ChangeDetails from '../core/change-details';\nimport { DIRECTION } from '../core/utils';\nimport { TailDetails } from '../core/tail-details';\nimport ContinuousTailDetails from '../core/continuous-tail-details';\n\n\nexport\ntype MaskedEnumOptions = Omit<MaskedPatternOptions, 'mask'> & Pick<MaskedEnum, 'enum'> & Partial<Pick<MaskedEnum, 'matchValue'>>;\n\nexport\ntype MaskedEnumPatternOptions = MaskedPatternOptions & Partial<Pick<MaskedEnum, 'enum' | 'matchValue'>>;\n\n\n/** Pattern which validates enum values */\nexport default\nclass MaskedEnum extends MaskedPattern {\n declare enum: Array<string>;\n /** Match enum value */\n declare matchValue: (enumStr: string, inputStr: string, matchFrom: number) => boolean;\n\n static DEFAULTS: typeof MaskedPattern.DEFAULTS & Pick<MaskedEnum, 'matchValue'> = {\n ...MaskedPattern.DEFAULTS,\n matchValue: (estr, istr, matchFrom) => estr.indexOf(istr, matchFrom) === matchFrom,\n };\n\n constructor (opts?: MaskedEnumOptions) {\n super({\n ...MaskedEnum.DEFAULTS,\n ...opts,\n } as MaskedPatternOptions); // mask will be created in _update\n }\n\n override updateOptions (opts: Partial<MaskedEnumOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedEnumOptions>) {\n const { enum: enum_, ...eopts }: MaskedEnumPatternOptions = opts;\n\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\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n\n this.enum = enum_;\n }\n\n super._update(eopts);\n }\n\n override _appendCharRaw (ch: string, flags: AppendFlags<MaskedPatternState>={}): ChangeDetails {\n const matchFrom = Math.min(this.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n\n const matches = this.enum.filter(e => this.matchValue(e, this.unmaskedValue + ch, matchFrom));\n\n if (matches.length) {\n if (matches.length === 1) {\n this._forEachBlocksInRange(0, this.value.length, (b, bi) => {\n const mch = matches[0][bi];\n if (bi >= this.value.length || mch === b.value) return;\n\n b.reset();\n b._appendChar(mch, flags);\n });\n }\n\n const d = super._appendCharRaw(matches[0][this.value.length], flags);\n\n if (matches.length === 1) {\n matches[0].slice(this.unmaskedValue.length).split('').forEach(mch => d.aggregate(super._appendCharRaw(mch)));\n }\n\n return d;\n }\n\n return new ChangeDetails({ skip: !this.isComplete });\n }\n\n override extractTail (fromPos: number=0, toPos: number=this.displayValue.length): TailDetails {\n // just drop tail\n return new ContinuousTailDetails('', fromPos);\n }\n\n override remove (fromPos: number=0, toPos: number=this.displayValue.length): ChangeDetails {\n if (fromPos === toPos) return new ChangeDetails();\n\n const matchFrom = Math.min(super.nearestInputPos(0, DIRECTION.FORCE_RIGHT), this.value.length);\n\n let pos: number;\n for (pos = fromPos; pos >= 0; --pos) {\n const matches = this.enum.filter(e => this.matchValue(e, this.value.slice(matchFrom, pos), matchFrom));\n if (matches.length > 1) break;\n }\n\n const details = super.remove(pos, toPos);\n details.tailShift += pos - fromPos;\n\n return details;\n }\n\n override get isComplete (): boolean {\n return this.enum.indexOf(this.value) >= 0;\n }\n}\n\n\nIMask.MaskedEnum = MaskedEnum;\n","import Masked, { type MaskedOptions } from './base';\nimport IMask from '../core/holder';\n\n\nexport\ntype MaskedFunctionOptions = MaskedOptions<MaskedFunction>;\n\n/** Masking by custom Function */\nexport default\nclass MaskedFunction<Value=any> extends Masked<Value> {\n /** */\n declare mask: (value: string, masked: Masked) => boolean;\n /** Enable characters overwriting */\n declare overwrite?: boolean | 'shift' | undefined;\n /** */\n declare eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n declare skipInvalid?: boolean | undefined;\n /** */\n declare autofix?: boolean | 'pad' | undefined;\n\n override updateOptions (opts: Partial<MaskedFunctionOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedFunctionOptions>) {\n super._update({\n ...opts,\n validate: opts.mask,\n });\n }\n}\n\n\nIMask.MaskedFunction = MaskedFunction;\n","import { escapeRegExp, type Direction, DIRECTION } from '../core/utils';\nimport ChangeDetails from '../core/change-details';\nimport { type TailDetails } from '../core/tail-details';\n\nimport Masked, { type MaskedOptions, type ExtractFlags, type AppendFlags } from './base';\nimport IMask from '../core/holder';\n\n\nexport\ntype MaskedNumberOptions = MaskedOptions<MaskedNumber,\n | 'radix'\n | 'thousandsSeparator'\n | 'mapToRadix'\n | 'scale'\n | 'min'\n | 'max'\n | 'normalizeZeros'\n | 'padFractionalZeros'\n>;\n\n/** Number mask */\nexport default\nclass MaskedNumber extends Masked<number> {\n static UNMASKED_RADIX = '.';\n static EMPTY_VALUES: Array<null | undefined | string | number> = [...Masked.EMPTY_VALUES, 0];\n static DEFAULTS = {\n ...Masked.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: number) => n.toLocaleString('en-US', { useGrouping: false, maximumFractionDigits: 20 }),\n };\n\n declare mask: NumberConstructor;\n /** Single char */\n declare radix: string;\n /** Single char */\n declare thousandsSeparator: string;\n /** Array of single chars */\n declare mapToRadix: Array<string>;\n /** */\n declare min: number;\n /** */\n declare max: number;\n /** Digits after point */\n declare scale: number;\n /** Flag to remove leading and trailing zeros in the end of editing */\n declare normalizeZeros: boolean;\n /** Flag to pad trailing zeros after point in the end of editing */\n declare padFractionalZeros: boolean;\n /** Enable characters overwriting */\n declare overwrite?: boolean | 'shift' | undefined;\n /** */\n declare eager?: boolean | 'remove' | 'append' | undefined;\n /** */\n declare skipInvalid?: boolean | undefined;\n /** */\n declare autofix?: boolean | 'pad' | undefined;\n /** Format typed value to string */\n declare format: (value: number, masked: Masked) => string;\n /** Parse string to get typed value */\n declare parse: (str: string, masked: Masked) => number;\n\n declare _numberRegExp: RegExp;\n declare _thousandsSeparatorRegExp: RegExp;\n declare _mapToRadixRegExp: RegExp;\n declare _separatorsProcessed: boolean;\n\n constructor (opts?: MaskedNumberOptions) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts,\n });\n }\n\n override updateOptions (opts: Partial<MaskedNumberOptions>) {\n super.updateOptions(opts);\n }\n\n override _update (opts: Partial<MaskedNumberOptions>) {\n super._update(opts);\n this._updateRegExps();\n }\n\n _updateRegExps () {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ?\n `(${escapeRegExp(this.radix)}\\\\d{0,${this.scale}})?` :\n '') + '$';\n\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\n _removeThousandsSeparators (value: string): string {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n _insertThousandsSeparators (value: string): string {\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\n override doPrepareChar (ch: string, flags: AppendFlags={}): [string, ChangeDetails] {\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(\n 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 ||\n !flags.input && !flags.raw\n ) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch\n ), flags);\n if (ch && !prepCh) details.skip = true;\n\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n\n return [prepCh, details];\n }\n\n _separatorsCount (to: number, extendOnSeparators: boolean=false): number {\n let count = 0;\n\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\n return count;\n }\n\n _separatorsCountFromSlice (slice: string=this._value): number {\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n\n override extractInput (fromPos: number=0, toPos: number=this.displayValue.length, flags?: ExtractFlags): string {\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n\n \n override _appendCharRaw (ch: string, flags: AppendFlags={}): ChangeDetails {\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ?\n flags._beforeTailState._value :\n this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n\n const oldValue = this._value;\n\n this._value += ch;\n\n const num = this.number;\n let accepted = !isNaN(num);\n let skip = false;\n\n if (accepted) {\n let fixedNum;\n if (this.min != null && this.min < 0 && this.number < this.min) fixedNum = this.min;\n if (this.max != null && this.max > 0 && this.number > this.max) fixedNum = this.max;\n\n if (fixedNum != null) {\n if (this.autofix) {\n this._value = this.format(fixedNum, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n skip ||= oldValue === this._value && !flags.tail; // if not changed on tail it's still ok to proceed\n } else {\n accepted = false;\n }\n }\n accepted &&= Boolean(this._value.match(this._numberRegExp));\n }\n\n let appendDetails;\n if (!accepted) {\n this._value = oldValue;\n appendDetails = new ChangeDetails();\n } else {\n appendDetails = new ChangeDetails({\n inserted: this._value.slice(oldValue.length),\n rawInserted: skip ? '' : ch,\n skip,\n });\n }\n\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ?\n flags._beforeTailState._value :\n this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n return appendDetails;\n }\n\n _findSeparatorAround (pos: number): number {\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\n return -1;\n }\n\n _adjustRangeWithSeparators (from: number, to: number): [number, number] {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n\n \n override remove (fromPos: number=0, toPos: number=this.displayValue.length): ChangeDetails {\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length,\n });\n }\n\n override nearestInputPos (cursorPos: number, direction?: Direction): number {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT: {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos ||\n this.value.length <= separatorAtLeftEndPos ||\n direction === DIRECTION.FORCE_LEFT\n ) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT: {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n\n override 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\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n\n let formatted = this.value;\n\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n\n this._value = formatted;\n }\n\n super.doCommit();\n }\n\n _normalizeZeros (value: string): string {\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\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\n _padFractionalZeros (value: string): string {\n if (!value) return value;\n\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\n override doSkipInvalid (ch: string, flags: AppendFlags={}, checkTail?: TailDetails): boolean {\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (\n ch === this.radix ||\n ch === MaskedNumber.UNMASKED_RADIX ||\n this.mapToRadix.includes(ch)\n )\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n\n override get unmaskedValue (): string {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value))\n .replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n\n override set unmaskedValue (unmaskedValue: string) {\n super.unmaskedValue = unmaskedValue;\n }\n\n override get typedValue (): number {\n return this.parse(this.unmaskedValue, this);\n }\n\n override set typedValue (n: number) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number (): number {\n return this.typedValue;\n }\n\n set number (number: number) {\n this.typedValue = number;\n }\n\n get allowNegative (): boolean {\n return (this.min != null && this.min < 0) || (this.max != null && this.max < 0);\n }\n\n get allowPositive (): boolean {\n return (this.min != null && this.min > 0) || (this.max != null && this.max > 0);\n }\n\n override typedValueEquals (value: any): boolean {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (\n super.typedValueEquals(value) ||\n MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)\n ) && !(value === 0 && this.value === '');\n }\n}\n\n\nIMask.MaskedNumber = MaskedNumber;\n","import createMask, { type FactoryArg, type FactoryReturnMasked } from './factory';\nimport IMask from '../core/holder';\n\n\n/** Mask pipe source and destination types */\nexport\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue',\n} as const;\n\ntype ValueOf<T> = T[keyof T];\n\ntype TypedValueOf<\n Opts extends FactoryArg,\n Type extends ValueOf<typeof PIPE_TYPE>\n> = Type extends (typeof PIPE_TYPE.MASKED | typeof PIPE_TYPE.UNMASKED) ?\n string :\n FactoryReturnMasked<Opts>['typedValue']\n;\n\n/** Creates new pipe function depending on mask type, source and destination options */\nexport\nfunction createPipe<\n Arg extends FactoryArg,\n From extends ValueOf<typeof PIPE_TYPE> = typeof PIPE_TYPE.MASKED,\n To extends ValueOf<typeof PIPE_TYPE> = typeof PIPE_TYPE.MASKED,\n> (\n arg: Arg,\n from: From=PIPE_TYPE.MASKED as From,\n to: To=PIPE_TYPE.MASKED as To,\n) {\n const masked = createMask(arg);\n return (value: TypedValueOf<Arg, From>) => masked.runIsolated(m => {\n m[from] = value;\n return m[to] as TypedValueOf<Arg, To>;\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nexport\nfunction pipe<\n Arg extends FactoryArg,\n From extends ValueOf<typeof PIPE_TYPE> = typeof PIPE_TYPE.MASKED,\n To extends ValueOf<typeof PIPE_TYPE> = typeof PIPE_TYPE.MASKED,\n> (\n value: TypedValueOf<Arg, From>,\n mask: Arg,\n from?: From,\n to?: To,\n) {\n return createPipe(mask, from, to)(value);\n}\n\n\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n","import ChangeDetails from '../core/change-details';\nimport IMask from '../core/holder';\nimport { type AppendFlags } from './base';\nimport createMask, { type FactoryArg, normalizeOpts, type ExtendFactoryArgOptions, type UpdateOpts } from './factory';\nimport MaskedPattern, { type BlockExtraOptions, type MaskedPatternOptions, type MaskedPatternState } from './pattern';\nimport type PatternBlock from './pattern/block';\n\n\nexport\ntype RepeatBlockExtraOptions = Pick<BlockExtraOptions, 'repeat'>;\n\nexport\ntype RepeatBlockOptions = ExtendFactoryArgOptions<RepeatBlockExtraOptions>;\n\n\n/** Pattern mask */\nexport default\nclass RepeatBlock<M extends FactoryArg> extends MaskedPattern {\n declare _blockOpts: M & { repeat?: number };\n declare repeat: Required<RepeatBlockExtraOptions>['repeat'];\n\n\n get repeatFrom (): number {\n return (\n Array.isArray(this.repeat) ? this.repeat[0] :\n this.repeat === Infinity ? 0 : this.repeat\n ) ?? 0;\n }\n\n get repeatTo (): number {\n return (Array.isArray(this.repeat) ? this.repeat[1] : this.repeat) ?? Infinity;\n }\n\n constructor (opts: RepeatBlockOptions) {\n super(opts as MaskedPatternOptions);\n }\n\n override updateOptions (opts: UpdateOpts<RepeatBlockOptions>) {\n super.updateOptions(opts as MaskedPatternOptions);\n }\n\n override _update (opts: UpdateOpts<M> & RepeatBlockExtraOptions) {\n const { repeat, ...blockOpts } = normalizeOpts(opts) as any; // TODO type\n this._blockOpts = Object.assign({}, this._blockOpts, blockOpts);\n const block = createMask(this._blockOpts);\n this.repeat = repeat ?? (block as any).repeat ?? this.repeat ?? Infinity; // TODO type\n\n super._update({\n mask: 'm'.repeat(Math.max(this.repeatTo === Infinity && this._blocks?.length || 0, this.repeatFrom)),\n blocks: { m: block },\n eager: block.eager,\n overwrite: block.overwrite,\n skipInvalid: block.skipInvalid,\n lazy: (block as MaskedPattern).lazy,\n placeholderChar: (block as MaskedPattern).placeholderChar,\n displayChar: (block as MaskedPattern).displayChar,\n });\n }\n\n _allocateBlock (bi: number): PatternBlock | undefined {\n if (bi < this._blocks.length) return this._blocks[bi];\n if (this.repeatTo === Infinity || this._blocks.length < this.repeatTo) {\n this._blocks.push(createMask(this._blockOpts));\n this.mask += 'm';\n return this._blocks[this._blocks.length - 1];\n }\n }\n\n override _appendCharRaw (ch: string, flags: AppendFlags<MaskedPatternState>={}): ChangeDetails {\n const details = new ChangeDetails();\n\n for (\n let bi=this._mapPosToBlock(this.displayValue.length)?.index ?? Math.max(this._blocks.length - 1, 0), block, allocated;\n // try to get a block or\n // try to allocate a new block if not allocated already\n (block = this._blocks[bi] ?? (allocated = !allocated && this._allocateBlock(bi)));\n ++bi\n ) {\n const blockDetails = block._appendChar(ch, { ...flags, _beforeTailState: flags._beforeTailState?._blocks?.[bi] });\n\n if (blockDetails.skip && allocated) {\n // remove the last allocated block and break\n this._blocks.pop();\n this.mask = this.mask.slice(1);\n break;\n }\n\n details.aggregate(blockDetails);\n\n if (blockDetails.consumed) break; // go next char\n }\n\n return details;\n }\n\n _trimEmptyTail (fromPos: number=0, toPos?: number): void {\n const firstBlockIndex = Math.max(this._mapPosToBlock(fromPos)?.index || 0, this.repeatFrom, 0);\n let lastBlockIndex;\n if (toPos != null) lastBlockIndex = this._mapPosToBlock(toPos)?.index;\n if (lastBlockIndex == null) lastBlockIndex = this._blocks.length - 1;\n\n let removeCount = 0;\n for (let blockIndex = lastBlockIndex; firstBlockIndex <= blockIndex; --blockIndex, ++removeCount) {\n if (this._blocks[blockIndex].unmaskedValue) break;\n }\n\n if (removeCount) {\n this._blocks.splice(lastBlockIndex - removeCount + 1, removeCount);\n this.mask = this.mask.slice(removeCount);\n }\n }\n\n override reset () {\n super.reset();\n this._trimEmptyTail();\n }\n\n override remove (fromPos: number=0, toPos: number=this.displayValue.length): ChangeDetails {\n const removeDetails = super.remove(fromPos, toPos);\n this._trimEmptyTail(fromPos, toPos);\n return removeDetails;\n }\n\n override totalInputPositions (fromPos: number=0, toPos?: number): number {\n if (toPos == null && this.repeatTo === Infinity) return Infinity;\n return super.totalInputPositions(fromPos, toPos);\n }\n\n override get state (): MaskedPatternState {\n return super.state;\n }\n\n override set state (state: MaskedPatternState) {\n this._blocks.length = state._blocks.length;\n this.mask = this.mask.slice(0, this._blocks.length);\n super.state = state;\n }\n}\n\n\nIMask.RepeatBlock = RepeatBlock;\n","import IMask from './imask';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element';\nexport { default as HTMLInputMaskElement, type InputElement } from './controls/html-input-mask-element';\nexport { default as HTMLMaskElement } from './controls/html-mask-element';\nexport { default as InputMask, type InputMaskElement } from './controls/input';\nexport { default as MaskElement } from './controls/mask-element';\nexport { default as ChangeDetails, type ChangeDetailsOptions } from './core/change-details';\nexport { type AppendTail, type TailDetails } from './core/tail-details';\nexport { DIRECTION, forceDirection, type Direction, type Selection } from './core/utils';\nexport { default as Masked, type AppendFlags, type ExtractFlags, type MaskedOptions, type MaskedState } from './masked/base';\nexport { default as MaskedDate, type DateMaskType, type MaskedDateOptions } from './masked/date';\nexport { default as MaskedDynamic, type DynamicMaskType, type MaskedDynamicOptions, type MaskedDynamicState } from './masked/dynamic';\nexport { default as MaskedEnum, type MaskedEnumOptions } from './masked/enum';\nexport {\n default as createMask,\n normalizeOpts,\n type AllFactoryStaticOpts,\n type FactoryArg,\n type FactoryConstructorOpts,\n type FactoryConstructorReturnMasked,\n type FactoryInstanceOpts,\n type FactoryInstanceReturnMasked,\n type FactoryOpts,\n type FactoryReturnMasked,\n type FactoryStaticOpts,\n type FactoryStaticReturnMasked,\n type NormalizedOpts,\n type UpdateOpts,\n} from './masked/factory';\nexport { default as MaskedFunction, type MaskedFunctionOptions } from './masked/function';\nexport { default as MaskedNumber, type MaskedNumberOptions } from './masked/number';\nexport { default as MaskedPattern, type BlockPosData, type Definitions, type MaskedPatternOptions, type MaskedPatternState } from './masked/pattern';\nexport { type default as PatternBlock } from './masked/pattern/block';\nexport { default as ChunksTailDetails, type ChunksTailState } from './masked/pattern/chunk-tail-details';\nexport { default as PatternFixedDefinition, type PatternFixedDefinitionOptions } from './masked/pattern/fixed-definition';\nexport { default as PatternInputDefinition, type PatternInputDefinitionOptions, type PatternInputDefinitionState } from './masked/pattern/input-definition';\nexport { createPipe, pipe, PIPE_TYPE } from './masked/pipe';\nexport { default as MaskedRange, type MaskedRangeOptions } from './masked/range';\nexport { default as MaskedRegExp, type MaskedRegExpOptions } from './masked/regexp';\nexport { default as RepeatBlock, type RepeatBlockOptions } from './masked/repeat';\n\ntry { (globalThis as any).IMask = IMask; } catch {}\nexport default IMask;\n"],"names":["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","opts","assign","value","slice","startChangePos","oldValue","oldSelection","start","insertedCount","cursorPos","end","Math","min","inserted","substr","removedCount","max","removed","head","substring","tail","removeDirection","IMask","el","InputMask","maskedClass","mask","Error","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Masked","Function","MaskedFunction","console","warn","normalizeOpts","undefined","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","KEY_Z","KEY_Y","HTMLMaskElement","input","_onKeydown","bind","_onInput","_onBeforeinput","_onCompositionEnd","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","document","activeElement","bindEvents","handlers","addEventListener","drop","click","focus","commit","_handlers","e","redo","keyCode","shiftKey","metaKey","ctrlKey","preventDefault","undo","isComposing","selectionChange","inputType","unbindEvents","removeEventListener","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","InputHistory","states","currentIndex","currentState","isEmpty","push","state","MAX_LENGTH","shift","go","steps","clear","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_rawInputValue","history","_saveSelection","_onChange","_onDrop","_onFocus","_onClick","_onUndo","_onRedo","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","rawInputValue","typedValue","val","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","listeners","forEach","l","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","_fireChangeEvents","_historyChanging","restOpts","updateMask","updateOpts","optionsIsChanged","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","handler","off","hIndex","indexOf","splice","details","oldRawValue","offset","raw","doCommit","stopPropagation","_applyHistoryState","destroy","ChangeDetails","normalize","prep","rawInserted","tailShift","skip","aggregate","consumed","Boolean","equals","ContinuousTailDetails","from","stop","extend","appendTo","append","_appendPlaceholder","unshift","beforePos","shiftChar","_update","DEFAULTS","_initialized","withValueRefresh","reset","resolve","flags","parse","format","extractInput","isFilled","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","autofix","noFixState","fixDetails","pad","chDetails","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","d","doSkipInvalid","eager","remove","fn","_refreshing","rawInput","ret","runIsolated","_isolated","skipInvalid","prepare","prepareChar","validate","parent","deleteCount","tailPos","eagerRemove","valLength","tval","EMPTY_VALUES","ChunksTailDetails","chunks","map","join","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","index","_stops","_blocks","remainChars","c","props","cstate","chunkShiftPos","PatternCursor","_log","ok","block","_blockStartPos","s","pushState","popState","pop","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","minPos","maxPos","appendEager","char","isResolved","PatternInputDefinition","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","filter","bName","sort","expose","repeat","bOpts","blockOpts","maskedBlock","RepeatBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","to","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","placeholder","num","match","padEnd","firstNonZero","padLength","split","DefaultPattern","extractPatternOptions","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","date","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","_autofix","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","MaskedEnum","enum","enum_","eopts","lengths","requiredLength","optionalLength","matchFrom","matches","matchValue","mch","estr","istr","_updateRegExps","allowNegative","mid","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","number","accepted","isNaN","fixedNum","UNMASKED_RADIX","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","test","dropFractional","n","_MaskedNumber","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","arg","pipe","repeatFrom","Infinity","repeatTo","_ref2","_ref3","_ref4","_this$_blocks","_blockOpts","_allocateBlock","_this$_mapPosToBlock$","allocated","_this$_blocks$bi","_trimEmptyTail","_this$_mapPosToBlock2","_this$_mapPosToBlock3","firstBlockIndex","lastBlockIndex","removeCount","globalThis"],"mappings":"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"}