Константы и перечисления

Внутренняя модель библиотеки Inputmask опирается на набор предопределённых констант, символических обозначений и псевдо-перечислений, которые формируют основу работы масок ввода. Эти значения используются на всех уровнях: от парсинга шаблона до валидации символов и управления поведением при вводе. Константы в данном контексте выступают не просто фиксированными значениями, а элементами DSL (domain-specific language), описывающего правила маскирования.


Основой любой маски являются специальные символы, интерпретируемые как типы вводимых данных. Они образуют базовое «перечисление» токенов маски.

Основные токены

9 — цифровой символ

  • Разрешает ввод только цифр (0–9)
  • Используется для телефонных номеров, индексов, кодов

a — алфавитный символ

  • Разрешает только буквы латинского алфавита
  • Часто применяется для имен, кодов, сокращений

* — буквенно-цифровой символ

  • Разрешает буквы и цифры
  • Используется для универсальных идентификаторов

Эти символы образуют базовое перечисление, которое можно рассматривать как enum-типы ввода:

TokenType = { DIGIT, ALPHA, ALPHANUM }

Таблица дефиниций (definitions map)

Внутри Inputmask существует структура definitions, которая представляет собой расширяемое перечисление правил сопоставления символов.

Каждая запись в definitions имеет следующую структуру:

definitions: {
  "9": {
    validator: "[0-9]",
    cardinality: 1,
    definitionSymbol: "9"
  }
}

Ключевые поля определения

  • validator — регулярное выражение или функция проверки символа
  • cardinality — количество символов, которое покрывает правило
  • definitionSymbol — символ маски

Эта структура фактически является динамическим enum-реестром, где ключи ("9", "a", "*") выступают идентификаторами вариантов поведения.


Константы поведения маски

Помимо символов ввода, библиотека использует набор флагов, определяющих логику обработки строки.

Обязательные и необязательные части

  • optionalmarker — символы для обозначения необязательных сегментов маски Обычно используется пара [ и ]

  • quantifier — определяет повторяемость сегмента Пример: {1,3} означает от 1 до 3 повторений

Эти конструкции формируют псевдо-перечисление структурных операторов маски.


Константы очистки и завершения ввода

Внутренний механизм контроля полноты ввода использует несколько логических флагов:

clearIncomplete

  • Определяет, удаляется ли незавершённая маска при потере фокуса
  • Поведение бинарное: true | false

removeMaskOnSubmit

  • Указывает, должна ли маска удаляться при отправке формы
  • Превращает форматированное значение в «сырое»

autoUnmask

  • Управляет автоматическим преобразованием значения в немаскированный вид

Эти значения можно рассматривать как булевы перечисления режима обработки состояния ввода:

ProcessingMode = { MASKED, UNMASKED, AUTO }

Константы отображения

Отображение маски пользователю регулируется набором визуальных флагов.

placeholder

  • Символ-заполнитель (обычно _)
  • Используется для отображения незаполненных позиций

showMaskOnHover

  • Показывает маску при наведении

showMaskOnFocus

  • Показывает маску при получении фокуса

clearMaskOnLostFocus

  • Очищает маску при потере фокуса

Эти параметры формируют визуальное перечисление состояний отображения:

DisplayState = { ALWAYS, ON_FOCUS, ON_HOVER, NEVER }

Константы автокоррекции ввода

Внутренние механизмы Inputmask используют набор правил для автоматического исправления ввода.

casing

  • upper — преобразование к верхнему регистру
  • lower — преобразование к нижнему регистру
  • title — капитализация слов

Эти значения образуют enum:

CaseMode = { UPPER, LOWER, TITLE }

Константы пропуска и позиционирования

skipOptionalPartCharacter

  • Символ, определяющий пропуск необязательной части
  • Часто используется при частичном вводе

positionCaretOnClick

  • Управляет поведением курсора при клике

  • Возможные значения:

    • radixFocus
    • lvp (last valid position)
    • none

Это перечисление влияет на UX-логику навигации внутри поля ввода.


Константы alias-системы

В Inputmask предусмотрена система alias, которая фактически является реестром предустановленных масок.

Примеры alias-констант:

  • phone
  • email
  • currency
  • decimal
  • ip
  • datetime

Каждый alias представляет собой именованное перечисление конфигураций:

AliasType = {
  PHONE,
  EMAIL,
  CURRENCY,
  DATE,
  IP
}

Внутри alias хранится набор параметров, который разворачивается в полноценную маску.


Константы событийного слоя

Библиотека использует внутренние строковые константы для обработки событий.

Основные события:

  • complete — маска заполнена полностью
  • incomplete — маска не завершена
  • cleared — значение очищено
  • beforePaste — обработка вставки
  • beforeWrite — перед записью значения

Эти события образуют перечисление жизненного цикла ввода:

InputStateEvent = { COMPLETE, INCOMPLETE, CLEARED, BEFORE_PASTE, BEFORE_WRITE }

Константы режима работы с буфером

Буфер обмена и вставка данных управляются отдельными режимами.

pasteHandling

  • normal — стандартная обработка
  • overflow — игнорирование лишних символов
  • strict — строгая фильтрация

cutBehavior

  • keepMask — сохранять маску
  • removeMask — удалять маску при вырезании

Константы regex-движка

Внутренние правила валидации часто опираются на регулярные выражения, обёрнутые в логические константы.

preValidator

  • Выполняется до основной проверки
  • Используется для предварительной фильтрации символов

postValidator

  • Проверка после вставки значения
  • Используется для финальной корректировки

Эти уровни образуют цепочку проверки:

ValidationStage = { PRE, MAIN, POST }

Константы масочного движка

Ядро Inputmask оперирует внутренними режимами обработки строки.

key definitions:

  • buffer — текущее состояние ввода
  • maskset — структура маски
  • tests — массив правил проверки символов
  • lastValidPosition — последняя валидная позиция курсора

Фактически это внутренние «перечисления состояния движка»:

EngineState = { BUFFER, MASKSET, TESTS, CARET }

Константы режима синхронизации

greedy

  • Определяет жадность заполнения маски
  • При true маска стремится заполниться максимально

repeat

  • Управляет повторением сегментов маски

nullable

  • Позволяет маске принимать пустое значение

Итоговая структура перечислений

Совокупность всех констант формирует многоуровневую систему:

  • символьные токены (9, a, *)
  • структурные операторы ([], {})
  • поведенческие флаги (clearIncomplete, autoUnmask)
  • визуальные режимы (placeholder, focus/hover flags)
  • alias-перечисления (phone, date, email)
  • событийные константы (complete, incomplete)
  • внутренние состояния движка (buffer, maskset, tests)

Эта система позволяет рассматривать Inputmask не как набор функций, а как декларативный язык описания ограничений ввода, где каждая константа является элементом формального словаря правил маскирования.