Commit 6cd689d
committed
perf: optimize scroll rendering, rename focus methods, and resolve Safari caret bugs
- Implement scroll throttling in editor.ts using requestAnimationFrame guard to prevent redundant scroll frame renders and layout thrashing.
- Optimize getRenderedRange in Renderer.ts to O(1) complexity, removing live HTMLCollection array conversions and filter allocations.
- Rename misleading focus/focusCenter methods in Renderer to revealCursor/revealCursorCenter to avoid DOM input focus conflicts.
- Remove redundant and performance-heavy verifyDiffRendering method and helpers across editor.ts, Renderer.ts, and DiffRenderer.ts.
- Re-enable horizontal scrolling for Safari in cursor.ts with a combined requestAnimationFrame selection reset and opacity repaint hack to fix WebKit ghost carets.
- Add horizontal margin padding (20px) to scroll boundaries in cursor.ts to prevent the caret from being clipped or hugging viewport boundaries.1 parent 79d52c1 commit 6cd689d
5 files changed
Lines changed: 100 additions & 183 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
117 | 113 | | |
118 | 114 | | |
119 | 115 | | |
| |||
147 | 143 | | |
148 | 144 | | |
149 | 145 | | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
| 146 | + | |
156 | 147 | | |
157 | 148 | | |
158 | 149 | | |
| |||
163 | 154 | | |
164 | 155 | | |
165 | 156 | | |
166 | | - | |
167 | | - | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
168 | 160 | | |
| 161 | + | |
169 | 162 | | |
170 | 163 | | |
171 | 164 | | |
| 165 | + | |
172 | 166 | | |
173 | 167 | | |
174 | 168 | | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
175 | 194 | | |
176 | 195 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
83 | 84 | | |
84 | 85 | | |
85 | 86 | | |
| |||
132 | 133 | | |
133 | 134 | | |
134 | 135 | | |
135 | | - | |
| 136 | + | |
136 | 137 | | |
137 | 138 | | |
138 | 139 | | |
| |||
180 | 181 | | |
181 | 182 | | |
182 | 183 | | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
183 | 188 | | |
184 | 189 | | |
185 | 190 | | |
| |||
251 | 256 | | |
252 | 257 | | |
253 | 258 | | |
254 | | - | |
255 | 259 | | |
256 | 260 | | |
257 | 261 | | |
| |||
375 | 379 | | |
376 | 380 | | |
377 | 381 | | |
378 | | - | |
| 382 | + | |
379 | 383 | | |
380 | | - | |
| 384 | + | |
381 | 385 | | |
382 | 386 | | |
383 | 387 | | |
| |||
403 | 407 | | |
404 | 408 | | |
405 | 409 | | |
406 | | - | |
407 | | - | |
| 410 | + | |
| 411 | + | |
408 | 412 | | |
409 | 413 | | |
410 | 414 | | |
| |||
527 | 531 | | |
528 | 532 | | |
529 | 533 | | |
530 | | - | |
531 | | - | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
532 | 541 | | |
533 | 542 | | |
534 | 543 | | |
535 | 544 | | |
536 | 545 | | |
537 | | - | |
| 546 | + | |
538 | 547 | | |
539 | 548 | | |
540 | 549 | | |
| |||
1268 | 1277 | | |
1269 | 1278 | | |
1270 | 1279 | | |
1271 | | - | |
1272 | | - | |
| 1280 | + | |
1273 | 1281 | | |
1274 | | - | |
1275 | | - | |
1276 | | - | |
| 1282 | + | |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
| 1286 | + | |
| 1287 | + | |
| 1288 | + | |
1277 | 1289 | | |
1278 | 1290 | | |
1279 | 1291 | | |
| |||
1534 | 1546 | | |
1535 | 1547 | | |
1536 | 1548 | | |
1537 | | - | |
| 1549 | + | |
1538 | 1550 | | |
1539 | 1551 | | |
1540 | 1552 | | |
| |||
1549 | 1561 | | |
1550 | 1562 | | |
1551 | 1563 | | |
1552 | | - | |
| 1564 | + | |
1553 | 1565 | | |
1554 | 1566 | | |
1555 | 1567 | | |
| |||
1568 | 1580 | | |
1569 | 1581 | | |
1570 | 1582 | | |
1571 | | - | |
| 1583 | + | |
1572 | 1584 | | |
1573 | 1585 | | |
1574 | 1586 | | |
| |||
1629 | 1641 | | |
1630 | 1642 | | |
1631 | 1643 | | |
1632 | | - | |
1633 | 1644 | | |
1634 | 1645 | | |
1635 | 1646 | | |
| |||
1642 | 1653 | | |
1643 | 1654 | | |
1644 | 1655 | | |
1645 | | - | |
1646 | 1656 | | |
1647 | 1657 | | |
1648 | 1658 | | |
| |||
1653 | 1663 | | |
1654 | 1664 | | |
1655 | 1665 | | |
1656 | | - | |
1657 | 1666 | | |
1658 | 1667 | | |
1659 | 1668 | | |
| |||
1662 | 1671 | | |
1663 | 1672 | | |
1664 | 1673 | | |
1665 | | - | |
1666 | | - | |
1667 | | - | |
1668 | 1674 | | |
1669 | 1675 | | |
1670 | 1676 | | |
1671 | 1677 | | |
1672 | 1678 | | |
1673 | 1679 | | |
1674 | 1680 | | |
1675 | | - | |
1676 | 1681 | | |
1677 | 1682 | | |
1678 | 1683 | | |
| |||
1687 | 1692 | | |
1688 | 1693 | | |
1689 | 1694 | | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
1700 | | - | |
1701 | 1695 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
358 | 358 | | |
359 | 359 | | |
360 | 360 | | |
361 | | - | |
362 | | - | |
363 | 361 | | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
422 | | - | |
423 | | - | |
424 | | - | |
425 | | - | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
434 | | - | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
445 | | - | |
446 | | - | |
447 | | - | |
448 | | - | |
449 | | - | |
450 | | - | |
451 | 362 | | |
452 | 363 | | |
453 | 364 | | |
| |||
0 commit comments