Skip to content

Snapping & Measurement Managers. Фиксим проблемы с рассчётом дистанции для равноудалённых объектов.#264

Merged
Anu3ev merged 6 commits intomasterfrom
working-tree
Feb 25, 2026
Merged

Snapping & Measurement Managers. Фиксим проблемы с рассчётом дистанции для равноудалённых объектов.#264
Anu3ev merged 6 commits intomasterfrom
working-tree

Conversation

@Anu3ev
Copy link
Owner

@Anu3ev Anu3ev commented Feb 25, 2026

  • Переработана логика расчёта и отображения расстояний для единообразного поведения в snapping и measurement.
  • Обновлён алгоритм spacing-snap: улучшен выбор контекста, удержание прилипания и условия показа визуальных гайдов.
  • Доработано поведение при перемещении, чтобы spacing-снап не ломался дополнительным округлением позиции.
  • Улучшен snapping при масштабировании: визуальные размеры и позиционирование стали более предсказуемыми на пиксельной сетке.
  • Добавлена пиксельная нормализация объектов при создании/добавлении через менеджеры, чтобы устранять дробные координаты и размеры на входе.
  • Внесены сопутствующие изменения в типы/константы и связанные расчётные утилиты.
  • Расширено тестовое покрытие новыми сценариями для geometry и snapping, включая кейсы pixel-grid, центрирования и движения.

@github-actions
Copy link

github-actions bot commented Feb 25, 2026

Результаты тестирования на Node.js 20

🎉 Все тесты прошли успешно!

📊 Покрытие кода тестами

💡 Что это означает? Покрытие показывает, какая часть вашего кода проверена тестами.

Метрика Значение Что проверяется
📝 Строки кода 61.75% Сколько строк кода было выполнено во время тестов
Функции 57.76% Сколько функций было вызвано и протестировано
🌿 Ветвления 47.73% Сколько условий if/else/switch было проверено
Утверждения 60.06% Сколько отдельных команд было выполнено
📁 Покрытие по файлам (нажмите чтобы развернуть)
  • image-editor/src/main.ts: 100% строк, 100% функций
  • demo/js/elements.js: 0% строк, 100% функций
  • demo/js/index.js: 0% строк, 0% функций
  • demo/js/listeners.js: 0% строк, 0% функций
  • demo/js/methods.js: 0% строк, 0% функций
  • src/editor/constants.ts: 100% строк, 100% функций
  • src/editor/default-fonts.ts: 100% строк, 100% функций
  • src/editor/defaults.ts: 100% строк, 100% функций
  • editor/index.ts: 99.18% строк, 100% функций
  • src/editor/listeners.ts: 94.73% строк, 88.88% функций
  • background-manager/index.ts: 82.25% строк, 88.88% функций
  • canvas-manager/index.ts: 92.68% строк, 100% функций
  • clipboard-manager/index.ts: 83.12% строк, 92% функций
  • editor/customized-controls/constants.ts: 100% строк, 100% функций
  • editor/customized-controls/default-controls.ts: 100% строк, 100% функций
  • customized-controls/index.ts: 3.52% строк, 0% функций
  • editor/customized-controls/renderers.ts: 14.75% строк, 0% функций
  • deletion-manager/index.ts: 3.33% строк, 0% функций
  • editor/error-manager/error-codes.ts: 100% строк, 100% функций
  • error-manager/index.ts: 100% строк, 100% функций
  • font-manager/index.ts: 92.85% строк, 94.73% функций
  • grouping-manager/index.ts: 100% строк, 100% функций
  • history-manager/index.ts: 95.02% строк, 94.23% функций
  • image-manager/index.ts: 94.37% строк, 97.22% функций
  • interaction-blocker/index.ts: 50% строк, 57.14% функций
  • layer-manager/index.ts: 97.82% строк, 100% функций
  • editor/measurement-manager/constants.ts: 100% строк, 100% функций
  • measurement-manager/index.ts: 90.67% строк, 92% функций
  • module-loader/index.ts: 11.11% строк, 0% функций
  • object-lock-manager/index.ts: 6.45% строк, 0% функций
  • pan-constraint-manager/index.ts: 6.97% строк, 14.28% функций
  • selection-manager/index.ts: 79.53% строк, 84% функций
  • shape-manager/index.ts: 8.51% строк, 0% функций
  • editor/snapping-manager/calculations.ts: 93.7% строк, 100% функций
  • editor/snapping-manager/constants.ts: 100% строк, 100% функций
  • snapping-manager/index.ts: 63.81% строк, 70.58% функций
  • editor/snapping-manager/renderer.ts: 20% строк, 0% функций
  • editor/snapping-manager/utils.ts: 100% строк, 100% функций
  • template-manager/index.ts: 3.28% строк, 2.5% функций
  • editor/text-manager/background-textbox.ts: 92.09% строк, 100% функций
  • editor/text-manager/constants.ts: 100% строк, 100% функций
  • editor/text-manager/geometry.ts: 98.36% строк, 100% функций
  • text-manager/index.ts: 60.52% строк, 68.96% функций
  • editor/text-manager/line-defaults.ts: 66.89% строк, 75% функций
  • editor/text-manager/selection.ts: 81.52% строк, 62.5% функций
  • transform-manager/index.ts: 82.47% строк, 91.66% функций
  • ui/angle-indicator/constants.ts: 100% строк, 100% функций
  • angle-indicator/index.ts: 100% строк, 100% функций
  • ui/toolbar-manager/default-config.ts: 18.18% строк, 0% функций
  • ui/toolbar-manager/icons.ts: 100% строк, 100% функций
  • toolbar-manager/index.ts: 1.66% строк, 0% функций
  • editor/utils/distance.ts: 100% строк, 100% функций
  • editor/utils/geometry.ts: 50% строк, 28.57% функций
  • editor/utils/gradient.ts: 7.69% строк, 0% функций
  • editor/utils/object-filter.ts: 93.75% строк, 66.66% функций
  • editor/utils/render-utils.ts: 100% строк, 100% функций
  • editor/utils/text.ts: 100% строк, 100% функций
  • worker-manager/index.ts: 13.63% строк, 0% функций
  • editor/worker-manager/worker.ts: 0% строк, 0% функций
  • zoom-manager/index.ts: 52.51% строк, 78.57% функций

🔗 Скачать полный отчёт о покрытии

⚠️ Рекомендация: Покрытие ниже 80%. Добавьте больше тестов для критичных участков кода.


🤖 Протестировано на Node.js 20 | ⏱️ 25.02.2026, 20:42:27

@Anu3ev Anu3ev merged commit 9c4a894 into master Feb 25, 2026
1 check passed
@Anu3ev Anu3ev deleted the working-tree branch February 25, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant