Внутренняя модель библиотеки Inputmask опирается на набор предопределённых констант, символических обозначений и псевдо-перечислений, которые формируют основу работы масок ввода. Эти значения используются на всех уровнях: от парсинга шаблона до валидации символов и управления поведением при вводе. Константы в данном контексте выступают не просто фиксированными значениями, а элементами DSL (domain-specific language), описывающего правила маскирования.
Основой любой маски являются специальные символы, интерпретируемые как типы вводимых данных. Они образуют базовое «перечисление» токенов маски.
9 — цифровой символ
a — алфавитный символ
* — буквенно-цифровой символ
Эти символы образуют базовое перечисление, которое можно рассматривать как enum-типы ввода:
TokenType = { DIGIT, ALPHA, ALPHANUM }
Внутри Inputmask существует структура definitions,
которая представляет собой расширяемое перечисление правил сопоставления
символов.
Каждая запись в definitions имеет следующую
структуру:
definitions: {
"9": {
validator: "[0-9]",
cardinality: 1,
definitionSymbol: "9"
}
}
Эта структура фактически является динамическим enum-реестром, где
ключи ("9", "a", "*") выступают
идентификаторами вариантов поведения.
Помимо символов ввода, библиотека использует набор флагов, определяющих логику обработки строки.
optionalmarker — символы для
обозначения необязательных сегментов маски Обычно используется пара
[ и ]
quantifier — определяет
повторяемость сегмента Пример: {1,3} означает от 1 до 3
повторений
Эти конструкции формируют псевдо-перечисление структурных операторов маски.
Внутренний механизм контроля полноты ввода использует несколько логических флагов:
clearIncompletetrue | falseremoveMaskOnSubmitautoUnmaskЭти значения можно рассматривать как булевы перечисления режима обработки состояния ввода:
ProcessingMode = { MASKED, UNMASKED, AUTO }
Отображение маски пользователю регулируется набором визуальных флагов.
_)Эти параметры формируют визуальное перечисление состояний отображения:
DisplayState = { ALWAYS, ON_FOCUS, ON_HOVER, NEVER }
Внутренние механизмы Inputmask используют набор правил для автоматического исправления ввода.
upper — преобразование к верхнему
региструlower — преобразование к нижнему
региструtitle — капитализация словЭти значения образуют enum:
CaseMode = { UPPER, LOWER, TITLE }
Управляет поведением курсора при клике
Возможные значения:
radixFocuslvp (last valid position)noneЭто перечисление влияет на UX-логику навигации внутри поля ввода.
В Inputmask предусмотрена система alias, которая
фактически является реестром предустановленных масок.
phoneemailcurrencydecimalipdatetimeКаждый alias представляет собой именованное перечисление конфигураций:
AliasType = {
PHONE,
EMAIL,
CURRENCY,
DATE,
IP
}
Внутри alias хранится набор параметров, который разворачивается в полноценную маску.
Библиотека использует внутренние строковые константы для обработки событий.
complete — маска заполнена полностьюincomplete — маска не завершенаcleared — значение очищеноbeforePaste — обработка вставкиbeforeWrite — перед записью значенияЭти события образуют перечисление жизненного цикла ввода:
InputStateEvent = { COMPLETE, INCOMPLETE, CLEARED, BEFORE_PASTE, BEFORE_WRITE }
Буфер обмена и вставка данных управляются отдельными режимами.
normal — стандартная обработкаoverflow — игнорирование лишних символовstrict — строгая фильтрацияkeepMask — сохранять маскуremoveMask — удалять маску при вырезанииВнутренние правила валидации часто опираются на регулярные выражения, обёрнутые в логические константы.
Эти уровни образуют цепочку проверки:
ValidationStage = { PRE, MAIN, POST }
Ядро Inputmask оперирует внутренними режимами обработки строки.
buffer — текущее состояние вводаmaskset — структура маскиtests — массив правил проверки символовlastValidPosition — последняя валидная позиция
курсораФактически это внутренние «перечисления состояния движка»:
EngineState = { BUFFER, MASKSET, TESTS, CARET }
true маска стремится заполниться максимальноСовокупность всех констант формирует многоуровневую систему:
9, a,
*)[], {})clearIncomplete,
autoUnmask)placeholder, focus/hover flags)Эта система позволяет рассматривать Inputmask не как набор функций, а как декларативный язык описания ограничений ввода, где каждая константа является элементом формального словаря правил маскирования.