Skip to content

TextManager & SnappingManager. Угловой скейлинг текста переведён на общую логику прилипания, исправлено сохранение точных размеров - #408

Merged
Anu3ev merged 1 commit into
masterfrom
working-tree
Aug 14, 2026

Conversation

@Anu3ev

@Anu3ev Anu3ev commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Что сделано

  • Переведены все четыре угловые ручки отдельного текста.
  • Исправлены удержание направляющих, Ctrl, поворот и скейлинг относительно центра.
  • Сохранены дробные размеры после mouseup, undo/redo, копирования и применения шаблона.
  • Сохранено прежнее ограничение минимальной ширины для обеих боковых ручек.
  • Добавлены unit- и e2e-тесты.
  • Обновлен README

…бщую логику прилипания, исправлено сохранение точных размеров
@github-actions

Copy link
Copy Markdown

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

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

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

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

Метрика Значение Что проверяется
📝 Строки кода 86.85% Сколько строк кода было выполнено во время тестов
Функции 88.56% Сколько функций было вызвано и протестировано
🌿 Ветвления 71.22% Сколько условий if/else/switch было проверено
Утверждения 83.62% Сколько отдельных команд было выполнено
📁 Покрытие по файлам (нажмите чтобы развернуть)
  • src/editor/constants.ts: 100% строк, 100% функций
  • src/editor/default-fonts.ts: 100% строк, 100% функций
  • src/editor/defaults.ts: 100% строк, 100% функций
  • editor/index.ts: 97.82% строк, 100% функций
  • src/editor/listeners.ts: 94.9% строк, 92.98% функций
  • src/editor/object-serialization.ts: 100% строк, 100% функций
  • background-manager/index.ts: 83.55% строк, 90.9% функций
  • canvas-manager/index.ts: 95.5% строк, 100% функций
  • clipboard-manager/index.ts: 92.05% строк, 96.96% функций
  • crop-manager/index.ts: 44.59% строк, 44.44% функций
  • crop-manager/domain/crop-dimming-overlay.ts: 100% строк, 100% функций
  • crop-manager/domain/crop-frame-size.ts: 100% строк, 100% функций
  • crop-manager/domain/crop-frame-transform-state.ts: 40% строк, 0% функций
  • crop-manager/domain/crop-frame.ts: 98.41% строк, 100% функций
  • crop-manager/domain/crop-geometry.ts: 94.25% строк, 100% функций
  • crop-manager/domain/crop-resize-mode.ts: 68.75% строк, 50% функций
  • crop-manager/domain/crop-result.ts: 100% строк, 100% функций
  • crop-manager/domain/crop-source-scale.ts: 58.33% строк, 53.84% функций
  • crop-manager/interaction/crop-controls.ts: 18.7% строк, 18.51% функций
  • crop-manager/mutation/crop-apply.ts: 78.68% строк, 70% функций
  • editor/customized-controls/constants.ts: 100% строк, 100% функций
  • editor/customized-controls/default-controls.ts: 100% строк, 100% функций
  • customized-controls/index.ts: 66.66% строк, 84.21% функций
  • editor/customized-controls/renderers.ts: 14.75% строк, 0% функций
  • deletion-manager/index.ts: 96.07% строк, 100% функций
  • editor/error-manager/error-codes.ts: 100% строк, 100% функций
  • error-manager/index.ts: 100% строк, 100% функций
  • font-manager/index.ts: 92.94% строк, 94.73% функций
  • grouping-manager/index.ts: 100% строк, 100% функций
  • editor/history-manager/constants.ts: 100% строк, 100% функций
  • editor/history-manager/diff-normalization.ts: 100% строк, 100% функций
  • history-manager/index.ts: 96.06% строк, 95.45% функций
  • editor/history-manager/load-state.ts: 100% строк, 100% функций
  • editor/history-manager/snapshot-interactivity.ts: 100% строк, 100% функций
  • editor/image-manager/blob-url-registry.ts: 95.91% строк, 100% функций
  • editor/image-manager/canvas-export.ts: 92.1% строк, 95.23% функций
  • editor/image-manager/export-utils.ts: 75% строк, 100% функций
  • editor/image-manager/image-format.ts: 96% строк, 100% функций
  • editor/image-manager/image-resize.ts: 90% строк, 100% функций
  • editor/image-manager/image-scale.ts: 88.88% строк, 100% функций
  • editor/image-manager/import-image.ts: 95.32% строк, 92% функций
  • image-manager/index.ts: 95.89% строк, 100% функций
  • editor/image-manager/object-export.ts: 98.33% строк, 100% функций
  • editor/interaction-blocker/ai-generation-overlay.ts: 93.2% строк, 94.11% функций
  • interaction-blocker/index.ts: 97.72% строк, 100% функций
  • layer-manager/index.ts: 98% строк, 100% функций
  • editor/measurement-manager/constants.ts: 100% строк, 100% функций
  • measurement-manager/index.ts: 92.56% строк, 93.1% функций
  • module-loader/index.ts: 11.11% строк, 0% функций
  • object-lock-manager/index.ts: 100% строк, 100% функций
  • pan-constraint-manager/index.ts: 80.26% строк, 83.33% функций
  • selection-manager/index.ts: 79.53% строк, 84% функций
  • shape-manager/index.ts: 100% строк, 100% функций
  • shape-manager/creation/shape-group-factory.ts: 98.41% строк, 92.3% функций
  • shape-manager/creation/shape-node-factory.ts: 27.32% строк, 38.09% функций
  • shape-manager/domain/shape-group.ts: 98.88% строк, 90.9% функций
  • shape-manager/domain/shape-layout-signature.ts: 100% строк, 100% функций
  • shape-manager/domain/shape-nodes.ts: 62.5% строк, 100% функций
  • shape-manager/domain/shape-presets.ts: 100% строк, 100% функций
  • shape-manager/domain/shape-reference.ts: 100% строк, 100% функций
  • shape-manager/domain/shape-rounding.ts: 100% строк, 100% функций
  • shape-manager/domain/shape-runtime.ts: 100% строк, 100% функций
  • shape-manager/domain/shape-style.ts: 100% строк, 100% функций
  • shape-manager/editing/shape-editing-controller.ts: 100% строк, 100% функций
  • shape-manager/events/shape-event-controller.ts: 97.71% строк, 100% функций
  • shape-manager/layout/shape-layout-controller.ts: 90.9% строк, 93.33% функций
  • shape-manager/layout/shape-layout-padding.ts: 97.75% строк, 100% функций
  • shape-manager/layout/shape-layout.ts: 94.64% строк, 93.93% функций
  • shape-manager/layout/shape-padding.ts: 100% строк, 100% функций
  • shape-manager/layout/shape-text-measurement.ts: 90.43% строк, 100% функций
  • shape-manager/lifecycle/shape-lifecycle-controller.ts: 97.1% строк, 89.47% функций
  • shape-manager/mutation/shape-mutation-controller.ts: 99.41% строк, 100% функций
  • shape-manager/mutation/shape-rehydration.ts: 100% строк, 100% функций
  • shape-manager/mutation/shape-update-pipeline.ts: 95.95% строк, 92% функций
  • shape-manager/scaling/active-selection-scaling-controller.ts: 88.28% строк, 96.55% функций
  • shape-manager/scaling/shape-controls.ts: 96.55% строк, 100% функций
  • shape-manager/scaling/shape-scale-interaction-controller.ts: 96.37% строк, 96.15% функций
  • shape-manager/scaling/shape-scale-stabilization.ts: 96.07% строк, 100% функций
  • shape-manager/scaling/shape-scaling-controller.ts: 95.23% строк, 84% функций
  • shape-manager/scaling/shape-scaling-layout.ts: 96.75% строк, 84.61% функций
  • shape-manager/scaling/shape-scaling-preview.ts: 100% строк, 100% функций
  • shape-manager/scaling/shape-scaling-transform.ts: 93.84% строк, 100% функций
  • shape-manager/text/shape-text-node-controller.ts: 96.07% строк, 100% функций
  • editor/snapping-manager/constants.ts: 100% строк, 100% функций
  • snapping-manager/index.ts: 87.5% строк, 89.28% функций
  • editor/snapping-manager/pixel-grid.ts: 94.04% строк, 93.33% функций
  • snapping-manager/guides/anchor-buckets.ts: 100% строк, 100% функций
  • snapping-manager/guides/renderer.ts: 66.03% строк, 80% функций
  • snapping-manager/movement/line-snapping.ts: 100% строк, 100% функций
  • snapping-manager/movement/movement-snap-candidates.ts: 96.66% строк, 100% функций
  • snapping-manager/movement/movement-snapping-controller.ts: 88.63% строк, 94.73% функций
  • snapping-manager/movement/movement-snapping-resolver.ts: 95.73% строк, 98.24% функций
  • snapping-manager/movement/movement-snapping-runtime.ts: 89.39% строк, 100% функций
  • snapping-manager/movement/movement-spacing-correction.ts: 83.82% строк, 70% функций
  • snapping-manager/movement/movement-spacing-verification.ts: 90.32% строк, 77.77% функций
  • snapping-manager/movement/spacing-chains.ts: 98.94% строк, 100% функций
  • snapping-manager/movement/spacing-patterns.ts: 100% строк, 100% функций
  • snapping-manager/movement/spacing.ts: 96.11% строк, 100% функций
  • snapping-manager/scaling/image-scale-snapping-controller.ts: 93.16% строк, 100% функций
  • snapping-manager/scaling/legacy-scale-snapping.ts: 92.48% строк, 100% функций
  • snapping-manager/scaling/rectangular-scale-gesture-projection.ts: 96.79% строк, 100% функций
  • snapping-manager/scaling/scale-projection.ts: 85.81% строк, 100% функций
  • snapping-manager/scaling/scale-snap-candidates.ts: 90.9% строк, 100% функций
  • snapping-manager/scaling/scale-snapping-resolver.ts: 90.33% строк, 100% функций
  • snapping-manager/scaling/scale-snapping-runtime.ts: 93.82% строк, 100% функций
  • snapping-manager/scaling/scaling-snap-guard.ts: 100% строк, 100% функций
  • snapping-manager/scaling/scaling-step-snap-guards.ts: 77.88% строк, 75.51% функций
  • editor/template-manager/background.ts: 78.78% строк, 87.5% функций
  • template-manager/index.ts: 83.42% строк, 91.48% функций
  • editor/text-manager/background-textbox.ts: 93.42% строк, 100% функций
  • editor/text-manager/constants.ts: 100% строк, 100% функций
  • editor/text-manager/geometry.ts: 96.42% строк, 100% функций
  • text-manager/index.ts: 94.41% строк, 93.02% функций
  • editor/text-manager/line-defaults.ts: 91.51% строк, 100% функций
  • editor/text-manager/selection.ts: 93.47% строк, 100% функций
  • editor/text-manager/text-update-controller.ts: 98.93% строк, 100% функций
  • text-manager/scaling/text-corner-scale-interaction-controller.ts: 94.65% строк, 100% функций
  • text-manager/scaling/text-corner-scale-measurer.ts: 98.11% строк, 100% функций
  • text-manager/scaling/text-corner-scale-plan.ts: 97.43% строк, 100% функций
  • text-manager/scaling/text-corner-scale-projection.ts: 100% строк, 100% функций
  • text-manager/scaling/text-corner-scale-state.ts: 100% строк, 92.3% функций
  • text-manager/scaling/text-scaling-materialization.ts: 94.82% строк, 100% функций
  • text-manager/scaling/text-scaling-measurement.ts: 71.42% строк, 60% функций
  • text-manager/scaling/text-scaling-transform.ts: 100% строк, 100% функций
  • text-manager/scaling/text-scaling.ts: 94.44% строк, 92.59% функций
  • text-manager/scaling/text-width-materialization.ts: 90.9% строк, 100% функций
  • text-manager/scaling/text-width-resize-interaction-controller.ts: 26.86% строк, 33.33% функций
  • text-manager/scaling/text-width-resize-measurer.ts: 31.25% строк, 0% функций
  • text-manager/scaling/text-width-resize-plan.ts: 96.87% строк, 100% функций
  • text-manager/scaling/text-width-resize-projection.ts: 89.28% строк, 92.3% функций
  • transform-manager/index.ts: 97.84% строк, 100% функций
  • ui/angle-indicator/constants.ts: 100% строк, 0% функций
  • angle-indicator/index.ts: 100% строк, 100% функций
  • ui/cursor-indicator/constants.ts: 100% строк, 100% функций
  • cursor-indicator/index.ts: 100% строк, 100% функций
  • ui/object-size-indicator/constants.ts: 100% строк, 100% функций
  • object-size-indicator/index.ts: 94.11% строк, 100% функций
  • ui/toolbar-manager/default-config.ts: 55.55% строк, 11.11% функций
  • ui/toolbar-manager/icons.ts: 100% строк, 100% функций
  • toolbar-manager/index.ts: 67.47% строк, 45% функций
  • viewport-scrollbar-manager/index.ts: 99.25% строк, 96.96% функций
  • editor/utils/distance.ts: 100% строк, 100% функций
  • editor/utils/geometry.ts: 89.02% строк, 91.66% функций
  • editor/utils/gradient.ts: 7.69% строк, 0% функций
  • editor/utils/object-filter.ts: 100% строк, 100% функций
  • editor/utils/object-identity.ts: 100% строк, 100% функций
  • editor/utils/primitive-shapes.ts: 100% строк, 100% функций
  • 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: 55.61% строк, 78.94% функций

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


🤖 Протестировано на Node.js 20 | ⏱️ 14.08.2026, 15:38:35

@Anu3ev
Anu3ev merged commit 6f2475d into master Aug 14, 2026
1 check passed
@Anu3ev
Anu3ev deleted the working-tree branch August 14, 2026 15:38
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