Новые возможности

В новых версиях AutoNumeric существенно переработан внутренний слой взаимодействия с DOM и событиями. Библиотека перешла к более строгому разделению ответственности между форматированием значения и управлением состоянием элемента ввода. Это позволило повысить предсказуемость поведения при работе в SPA-приложениях и при динамической перерисовке интерфейса.

Одним из ключевых улучшений стало более стабильное взаимодействие с современными фреймворками. AutoNumeric теперь лучше интегрируется с компонентной моделью, где DOM-элементы могут часто уничтожаться и пересоздаваться. Внутренние механизмы очистки состояния позволяют избежать утечек памяти при корректном использовании методов удаления экземпляра.

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

Улучшенная система конфигурации

Конфигурационный слой AutoNumeric стал более гибким и модульным. Появилась возможность комбинировать пресеты и пользовательские настройки без риска непредсказуемого перекрытия параметров.

Ключевые изменения:

  • улучшенная приоритизация конфигурационных источников (дефолтные значения → пресеты → пользовательские настройки)
  • более строгая валидация параметров при инициализации
  • расширенные механизмы наследования конфигурации

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

Также добавлена поддержка более сложных сценариев конфигурирования через объектные фабрики, позволяющие генерировать настройки на основе внешних условий.

Новые механизмы работы с событиями

Система событий в AutoNumeric получила переработанный цикл обработки пользовательского ввода. Основное изменение связано с разделением низкоуровневых DOM-событий и логических событий библиотеки.

Добавлены дополнительные события, позволяющие точнее отслеживать состояние поля ввода:

  • события до форматирования значения
  • события после применения маски форматирования
  • события изменения «сырого» числового значения
  • события синхронизации с внешней моделью

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

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

Расширенная работа с локалями и форматами чисел

Одним из значительных улучшений стала более гибкая система поддержки локалей. Форматирование чисел теперь отделено от жестко заданных региональных правил и может быть расширено пользовательскими наборами параметров.

Поддерживаются сценарии:

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

Особенно важным стало улучшение работы с дробными разделителями. В старых версиях могли возникать конфликты при смешанных вводах (например, когда пользователь вставляет значение из внешнего источника с другим форматом). В новых версиях добавлена более интеллектуальная нормализация входной строки до применения маски.

Оптимизация производительности при массовом использовании

AutoNumeric получил ряд оптимизаций, направленных на сценарии массового применения на странице.

Среди ключевых изменений:

  • снижение количества повторных перерасчетов форматирования
  • кэширование результатов парсинга входных строк
  • оптимизация работы при быстрых последовательных вводах

Особенно заметен прирост производительности при работе с таблицами, содержащими большое количество числовых полей. В таких случаях ранее наблюдались задержки при синхронном форматировании, теперь же обработка распределена более эффективно.

Также улучшена работа с requestAnimationFrame для минимизации блокировок UI при массовых обновлениях значений.

Новые методы программного управления экземпляром

Расширен API управления экземплярами AutoNumeric. Появились дополнительные методы для более тонкой работы с состоянием поля.

Добавлены возможности:

  • временного отключения форматирования без уничтожения экземпляра
  • принудительного пересчета отображаемого значения
  • получения «чистого» числового значения без форматирования и локализации
  • синхронизации состояния с внешними источниками данных

Особое значение имеет возможность переключения режима работы между «визуальным» и «логическим» представлением. Это позволяет использовать AutoNumeric как промежуточный слой между пользовательским вводом и бизнес-логикой приложения.

Улучшенная обработка вставки и внешних источников данных

Значительные изменения затронули обработку вставки значений из буфера обмена и внешних источников.

Теперь библиотека:

  • анализирует структуру вставляемого текста
  • определяет потенциальные числовые значения в неформатированном виде
  • корректно обрабатывает значения с пробелами, валютными символами и разделителями групп

Добавлен более устойчивый механизм очистки входной строки, предотвращающий ошибки при вставке данных из Excel, CSV или сторонних API.

Также улучшена обработка частично некорректных данных: если входное значение содержит смешанные символы, библиотека пытается извлечь максимально корректную числовую часть без полного отклонения ввода.

Расширенная кастомизация масок ввода

Механизм масок ввода стал более гибким и детализированным. Теперь возможно задавать правила форматирования на уровне отдельных символов и позиций.

Поддерживаются:

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

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

Улучшенная совместимость с современными сборщиками

AutoNumeric стал более устойчивым к особенностям современных сборщиков модулей. Добавлена корректная поддержка ESM-импорта, а также улучшена совместимость с tree-shaking.

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

Также улучшена работа в средах с SSR, где DOM может отсутствовать на этапе выполнения кода. Добавлены проверки и безопасные режимы инициализации.

Новые сценарии взаимодействия с внешними данными

AutoNumeric получил расширенные возможности интеграции с внешними источниками данных. Теперь возможно более гибко связывать поле ввода с внешними моделями состояния.

Реализованы сценарии:

  • двусторонняя синхронизация с реактивными сторами
  • подключение к потоковым обновлениям данных
  • адаптивное обновление отображения при изменении внешнего значения без потери фокуса

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

Улучшенная устойчивость к ошибкам ввода

Система обработки ошибок ввода стала более предсказуемой. Вместо жесткого отклонения некорректных значений теперь используется многоступенчатая нормализация.

В процессе обработки выполняются шаги:

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

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

Новые возможности расширения через плагины

Архитектура расширений стала более формализованной. Добавлен более четкий контракт для подключения сторонних модулей.

Плагины могут:

  • перехватывать этапы форматирования
  • модифицировать входные данные до парсинга
  • влиять на выходное отображение значения
  • добавлять собственные события и обработчики

Такая модель позволяет строить надстройки поверх AutoNumeric без изменения исходного кода библиотеки, сохраняя совместимость с обновлениями.