SnapOtter and GitHub
95d100c20b
feat(web): in-canvas zoom & pan for the object eraser and split tools ( #320 )
...
* feat(web): add pure zoom/pan math module with unit tests
* feat(i18n): add a11y.pan key across all locales (English, matching adjacent zoom labels)
* feat(web): add useZoomPan hook (state + gestures over pure math)
* feat(web): add ZoomToolbar component
* feat(web): zoom & pan in the object eraser canvas
* feat(web): zoom & pan in the split tool preview
* fix(web): synchronous pan-mode refs so drag-pan is race-free under fast input
* test(e2e): zoom & pan acceptance (split always-on, eraser bundle-gated)
2026-06-22 20:50:28 +08:00
..
2026-06-20 03:44:26 +08:00
2026-06-05 18:42:30 +08:00
2026-06-20 09:54:49 +08:00
2026-06-20 03:44:26 +08:00
2026-05-13 15:47:39 +08:00
2026-06-20 12:24:50 +08:00
2026-06-19 18:15:20 +08:00
2026-04-25 07:23:58 +08:00
2026-06-20 23:35:37 +08:00
2026-06-06 19:37:29 +08:00
2026-04-29 01:39:25 +08:00
2026-05-08 15:21:39 +08:00
2026-04-29 01:39:25 +08:00
2026-05-09 09:02:29 +08:00
2026-06-20 03:44:26 +08:00
2026-06-20 02:15:50 +08:00
2026-06-20 02:15:50 +08:00
2026-06-20 09:54:49 +08:00
2026-06-20 05:51:17 +08:00
2026-04-29 01:39:25 +08:00
2026-06-22 20:24:07 +08:00
2026-06-20 03:09:00 +08:00
2026-06-06 19:37:29 +08:00
2026-05-15 22:41:22 +08:00
2026-06-06 19:37:29 +08:00
2026-06-20 03:09:00 +08:00
2026-06-20 05:51:17 +08:00
2026-06-06 19:37:29 +08:00
2026-06-06 19:37:29 +08:00
2026-06-20 23:35:37 +08:00
2026-06-21 02:18:53 +08:00
2026-05-15 21:35:02 +08:00
2026-06-06 10:58:23 +08:00
2026-06-20 23:35:37 +08:00
2026-05-09 09:02:29 +08:00
2026-06-06 19:37:29 +08:00
2026-06-10 22:01:13 +08:00
2026-05-15 21:35:02 +08:00
2026-06-20 03:09:00 +08:00
2026-06-10 22:01:13 +08:00
2026-05-09 18:02:58 +08:00
2026-05-15 22:41:22 +08:00
2026-06-20 23:35:37 +08:00
2026-06-20 05:51:17 +08:00
2026-06-20 05:51:17 +08:00
2026-06-20 05:51:17 +08:00
2026-05-15 22:41:22 +08:00
2026-05-15 21:35:02 +08:00
2026-06-20 05:51:17 +08:00
2026-06-20 05:51:17 +08:00
2026-06-06 19:37:29 +08:00
2026-06-10 22:01:13 +08:00
2026-06-21 03:25:45 +08:00
2026-06-21 02:45:56 +08:00
2026-06-06 21:45:39 +08:00
2026-05-15 17:02:49 +08:00
2026-04-28 00:51:33 +08:00
2026-06-20 05:51:17 +08:00
2026-06-20 11:05:44 +08:00
2026-04-29 01:39:25 +08:00
2026-06-20 05:51:17 +08:00
2026-04-29 01:39:25 +08:00
2026-06-20 05:51:17 +08:00
2026-05-01 13:44:04 +08:00
2026-06-06 10:58:23 +08:00
2026-06-10 22:01:13 +08:00
2026-06-20 03:09:00 +08:00
2026-04-29 01:39:25 +08:00
2026-04-29 01:39:25 +08:00
2026-05-13 17:07:21 +08:00
2026-06-20 12:24:50 +08:00
2026-06-20 03:09:00 +08:00
2026-04-25 07:23:58 +08:00
2026-06-19 18:15:20 +08:00
2026-06-20 05:51:17 +08:00
2026-06-20 03:09:00 +08:00
2026-06-19 18:15:20 +08:00
2026-03-26 01:10:51 +08:00
2026-06-20 23:35:37 +08:00
2026-05-13 16:20:40 +08:00
2026-04-29 01:39:25 +08:00
2026-05-11 21:37:19 +08:00
2026-04-20 20:53:54 +08:00
2026-06-22 20:50:28 +08:00