feat(range): content inset support and active handle in useRangeEditor - #14120
Conversation
🎨 Storybook: ✅ Built — View Storybook🎭 Playwright: ✅ 1731 passed, 0 failed · 1 flaky📊 Browser Reports
📦 Bundle: 8.09 MB gzip 🔴 +92 BDetailsSummary
Category Glance App Entry Points — 3.64 kB (baseline 3.64 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.25 MB (baseline 1.25 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed / 1 unchanged Views & Navigation — 112 kB (baseline 112 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 12 added / 12 removed / 4 unchanged Panels & Settings — 551 kB (baseline 551 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 11 added / 11 removed / 15 unchanged User & Accounts — 29.1 kB (baseline 29.1 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 7 added / 7 removed / 3 unchanged Editors & Dialogs — 121 kB (baseline 121 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 5 added / 5 removed / 1 unchanged UI Components — 64.7 kB (baseline 64.7 kB) • ⚪ 0 BReusable component library chunks
Status: 6 added / 6 removed / 8 unchanged Data & Services — 3.37 MB (baseline 3.37 MB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 14 added / 14 removed / 3 unchanged Utilities & Hooks — 357 kB (baseline 357 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 15 added / 15 removed / 20 unchanged Vendor & Third-Party — 15.7 MB (baseline 15.7 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 12.4 MB (baseline 12.4 MB) • 🔴 +231 BBundles that do not match a named category
Status: 68 added / 68 removed / 207 unchanged ⚡ Performance Report
Show regressions
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-07-26T22:16:21.380Z",
"gitSha": "d6a8d5f5b6474f246b3d9118d01c55223cc11ee1",
"branch": "feat/range-editor-content-inset",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2001.0780000000068,
"styleRecalcs": 9,
"styleRecalcDurationMs": 7.776999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 445.70699999999994,
"heapDeltaBytes": 3580528,
"heapUsedBytes": 71089824,
"domNodes": 18,
"jsHeapTotalBytes": 20848640,
"scriptDurationMs": 15.15,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2020.2390000000037,
"styleRecalcs": 10,
"styleRecalcDurationMs": 10.570999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 501.0640000000001,
"heapDeltaBytes": 3629440,
"heapUsedBytes": 71033512,
"domNodes": 20,
"jsHeapTotalBytes": 20848640,
"scriptDurationMs": 19.728999999999996,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1970.5709999999783,
"styleRecalcs": 78,
"styleRecalcDurationMs": 45.92,
"layouts": 12,
"layoutDurationMs": 3.6459999999999995,
"taskDurationMs": 947.0280000000001,
"heapDeltaBytes": -1172224,
"heapUsedBytes": 66253632,
"domNodes": 61,
"jsHeapTotalBytes": 20848640,
"scriptDurationMs": 135.40200000000002,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1862.852000000089,
"styleRecalcs": 73,
"styleRecalcDurationMs": 37.525,
"layouts": 12,
"layoutDurationMs": 3.7880000000000007,
"taskDurationMs": 890.183,
"heapDeltaBytes": -18318936,
"heapUsedBytes": 49321716,
"domNodes": -266,
"jsHeapTotalBytes": 21237760,
"scriptDurationMs": 124.67200000000001,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1734.5920000000206,
"styleRecalcs": 30,
"styleRecalcDurationMs": 17.778000000000002,
"layouts": 6,
"layoutDurationMs": 0.7510000000000001,
"taskDurationMs": 416.86699999999996,
"heapDeltaBytes": 7108616,
"heapUsedBytes": 74594448,
"domNodes": 76,
"jsHeapTotalBytes": 20586496,
"scriptDurationMs": 22.839,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1721.2789999999814,
"styleRecalcs": 32,
"styleRecalcDurationMs": 15.723999999999998,
"layouts": 6,
"layoutDurationMs": 0.533,
"taskDurationMs": 358.427,
"heapDeltaBytes": 7173716,
"heapUsedBytes": 74595228,
"domNodes": 79,
"jsHeapTotalBytes": 20586496,
"scriptDurationMs": 17.185000000000002,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "dom-widget-clipping",
"durationMs": 656.4559999999915,
"styleRecalcs": 11,
"styleRecalcDurationMs": 7.747999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 420.91900000000004,
"heapDeltaBytes": -11636668,
"heapUsedBytes": 55684920,
"domNodes": 18,
"jsHeapTotalBytes": 21372928,
"scriptDurationMs": 63.986000000000004,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "dom-widget-clipping",
"durationMs": 606.5479999999752,
"styleRecalcs": 11,
"styleRecalcDurationMs": 7.7639999999999985,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 386.427,
"heapDeltaBytes": -11912344,
"heapUsedBytes": 55583880,
"domNodes": 18,
"jsHeapTotalBytes": 20848640,
"scriptDurationMs": 62.748,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-idle",
"durationMs": 2042.5979999999981,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.488,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 748.6490000000001,
"heapDeltaBytes": 6783288,
"heapUsedBytes": 65758964,
"domNodes": -265,
"jsHeapTotalBytes": 4792320,
"scriptDurationMs": 126.581,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "large-graph-idle",
"durationMs": 2051.089999999931,
"styleRecalcs": 8,
"styleRecalcDurationMs": 6.971999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 654.8880000000001,
"heapDeltaBytes": 6643916,
"heapUsedBytes": 65830188,
"domNodes": -269,
"jsHeapTotalBytes": 5054464,
"scriptDurationMs": 99.06899999999999,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "large-graph-pan",
"durationMs": 2200.5570000000034,
"styleRecalcs": 69,
"styleRecalcDurationMs": 14.639000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1294.9470000000001,
"heapDeltaBytes": 5773316,
"heapUsedBytes": 65733908,
"domNodes": -267,
"jsHeapTotalBytes": 4734976,
"scriptDurationMs": 439.19199999999995,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2194.827000000032,
"styleRecalcs": 69,
"styleRecalcDurationMs": 13.560000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1301.826,
"heapDeltaBytes": 6082792,
"heapUsedBytes": 66042732,
"domNodes": -269,
"jsHeapTotalBytes": 4997120,
"scriptDurationMs": 464.608,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-zoom",
"durationMs": 3230.7779999999866,
"styleRecalcs": 63,
"styleRecalcDurationMs": 12.613000000000003,
"layouts": 60,
"layoutDurationMs": 7.412,
"taskDurationMs": 1559.9750000000001,
"heapDeltaBytes": 1035336,
"heapUsedBytes": 62558116,
"domNodes": -277,
"jsHeapTotalBytes": 7675904,
"scriptDurationMs": 543.28,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3180.8900000000904,
"styleRecalcs": 65,
"styleRecalcDurationMs": 14.179,
"layouts": 60,
"layoutDurationMs": 6.985999999999999,
"taskDurationMs": 1470.2419999999997,
"heapDeltaBytes": -2261772,
"heapUsedBytes": 59472092,
"domNodes": -273,
"jsHeapTotalBytes": 7938048,
"scriptDurationMs": 517.9730000000001,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2046.4210000000094,
"styleRecalcs": 8,
"styleRecalcDurationMs": 8.678,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 835.675,
"heapDeltaBytes": 7285200,
"heapUsedBytes": 67287588,
"domNodes": -268,
"jsHeapTotalBytes": 4792320,
"scriptDurationMs": 140.673,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2057.6919999999745,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.603,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 674.563,
"heapDeltaBytes": 7396552,
"heapUsedBytes": 67361820,
"domNodes": -269,
"jsHeapTotalBytes": 4530176,
"scriptDurationMs": 107.087,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 611.4839999999617,
"styleRecalcs": 46,
"styleRecalcDurationMs": 11.026000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 418.815,
"heapDeltaBytes": -11827364,
"heapUsedBytes": 55623936,
"domNodes": 18,
"jsHeapTotalBytes": 21635072,
"scriptDurationMs": 125.89999999999998,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 602.6489999999285,
"styleRecalcs": 48,
"styleRecalcDurationMs": 10.794999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 404.636,
"heapDeltaBytes": -11769980,
"heapUsedBytes": 55928952,
"domNodes": 22,
"jsHeapTotalBytes": 21635072,
"scriptDurationMs": 118.524,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 2015.5840000000467,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.116,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 440.374,
"heapDeltaBytes": 3553088,
"heapUsedBytes": 70890880,
"domNodes": 18,
"jsHeapTotalBytes": 20324352,
"scriptDurationMs": 12.201,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 1995.824999999968,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.107,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 439.0830000000001,
"heapDeltaBytes": 3431912,
"heapUsedBytes": 70880048,
"domNodes": 20,
"jsHeapTotalBytes": 21110784,
"scriptDurationMs": 11.527,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1721.80800000001,
"styleRecalcs": 75,
"styleRecalcDurationMs": 34.81099999999999,
"layouts": 16,
"layoutDurationMs": 4.182,
"taskDurationMs": 793.0889999999999,
"heapDeltaBytes": -20133676,
"heapUsedBytes": 47364156,
"domNodes": -265,
"jsHeapTotalBytes": 21237760,
"scriptDurationMs": 90.711,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1690.851000000066,
"styleRecalcs": 75,
"styleRecalcDurationMs": 36.111000000000004,
"layouts": 16,
"layoutDurationMs": 4.978999999999999,
"taskDurationMs": 781.102,
"heapDeltaBytes": -20892128,
"heapUsedBytes": 46827256,
"domNodes": -267,
"jsHeapTotalBytes": 20713472,
"scriptDurationMs": 89.27700000000002,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-transition-enter",
"durationMs": 1419.0290000000232,
"styleRecalcs": 18,
"styleRecalcDurationMs": 32.404,
"layouts": 14,
"layoutDurationMs": 13.095000000000002,
"taskDurationMs": 1022.7789999999999,
"heapDeltaBytes": 7230468,
"heapUsedBytes": 98405220,
"domNodes": 13673,
"jsHeapTotalBytes": 13107200,
"scriptDurationMs": 39.411,
"eventListeners": 2371,
"totalBlockingTimeMs": 136,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8666.904000000046,
"styleRecalcs": 250,
"styleRecalcDurationMs": 40.261,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4963.912,
"heapDeltaBytes": 10338608,
"heapUsedBytes": 68908664,
"domNodes": -268,
"jsHeapTotalBytes": 6279168,
"scriptDurationMs": 1536.4689999999998,
"eventListeners": -113,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8269.969999999943,
"styleRecalcs": 249,
"styleRecalcDurationMs": 36.707,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 4416.857,
"heapDeltaBytes": 1624852,
"heapUsedBytes": 60155836,
"domNodes": -269,
"jsHeapTotalBytes": 6103040,
"scriptDurationMs": 1385.964,
"eventListeners": -113,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 17585.065999999984,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 17563.318000000003,
"heapDeltaBytes": -55033104,
"heapUsedBytes": 167154592,
"domNodes": -8311,
"jsHeapTotalBytes": -11210752,
"scriptDurationMs": 606.979,
"eventListeners": -16382,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.77333333333336,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 16435.433999999987,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 16373.960000000001,
"heapDeltaBytes": -42684288,
"heapUsedBytes": 169223408,
"domNodes": -8311,
"jsHeapTotalBytes": -14880768,
"scriptDurationMs": 537.324,
"eventListeners": -16380,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.779999999999927,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 21214.886999999977,
"styleRecalcs": 146,
"styleRecalcDurationMs": 19.64100000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 21187.423,
"heapDeltaBytes": -55902780,
"heapUsedBytes": 153414464,
"domNodes": -8311,
"jsHeapTotalBytes": -12783616,
"scriptDurationMs": 963.7,
"eventListeners": -16376,
"totalBlockingTimeMs": 326,
"frameDurationMs": 18.33666666666662,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 20235.619000000042,
"styleRecalcs": 140,
"styleRecalcDurationMs": 15.468000000000009,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 20202.802000000003,
"heapDeltaBytes": -52716688,
"heapUsedBytes": 156781684,
"domNodes": -8311,
"jsHeapTotalBytes": -17764352,
"scriptDurationMs": 870.373,
"eventListeners": -16378,
"totalBlockingTimeMs": 153,
"frameDurationMs": 17.776666666666763,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 470.86000000001604,
"styleRecalcs": 12,
"styleRecalcDurationMs": 20.497999999999998,
"layouts": 3,
"layoutDurationMs": 0.66,
"taskDurationMs": 125.16499999999999,
"heapDeltaBytes": -15863792,
"heapUsedBytes": 50735032,
"domNodes": 128,
"jsHeapTotalBytes": 7741440,
"scriptDurationMs": 10.871,
"eventListeners": 67,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "workflow-execution",
"durationMs": 456.81500000000597,
"styleRecalcs": 13,
"styleRecalcDurationMs": 19.652,
"layouts": 2,
"layoutDurationMs": 0.482,
"taskDurationMs": 108.00599999999999,
"heapDeltaBytes": -16206040,
"heapUsedBytes": 50557568,
"domNodes": 119,
"jsHeapTotalBytes": 7741440,
"scriptDurationMs": 9.354000000000001,
"eventListeners": 65,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
}
]
} |
|
Warning Review limit reached
Next review available in: 25 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthrough
ChangesRange editor inset support
Estimated code review effort: 2 (Simple) | ~10 minutes Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/composables/useRangeEditor.test.ts`:
- Around line 330-368: Add coverage around the existing inset-boundary tests and
the harness’s drag API: assert pointer positions beyond both contentInsetX
boundaries clamp to valueMin/valueMax, verify activeHandle identifies the
dragged handle during dragging, and verify it is cleared after pointerup and
lost pointer capture. Keep the tests focused on pointer-to-value mapping and
contentInsetX edge behavior.
In `@src/composables/useRangeEditor.ts`:
- Around line 119-120: In the startDrag function, move the activeHandle
assignment until after the trackRef.value null check succeeds, so failed drag
starts do not expose stale handle state. Preserve the existing behavior for
valid tracks.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 7c11791e-99b4-4b9a-ac13-6406649d795c
📒 Files selected for processing (2)
src/composables/useRangeEditor.test.tssrc/composables/useRangeEditor.ts
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #14120 +/- ##
========================================
Coverage 79.53% 79.54%
========================================
Files 1700 1700
Lines 110882 111013 +131
Branches 37719 37735 +16
========================================
+ Hits 88190 88300 +110
- Misses 22220 22233 +13
- Partials 472 480 +8
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 9 files with indirect coverage changes 🚀 New features to boost your workflow:
|
75ae39a to
ac85ab7
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/composables/useRangeEditor.ts`:
- Around line 35-41: In the normalization logic, validate contentInsetX.value
before using it: replace negative or non-finite values with zero, then cap the
finite inset at half of rect.width. Use this bounded inset to compute
contentWidth and the normalized value, preserving valid finite modelValue
output.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 8e7531fb-29b8-47ac-8253-2dc4f262b4ff
📒 Files selected for processing (2)
src/composables/useRangeEditor.test.tssrc/composables/useRangeEditor.ts
ac85ab7 to
9c600d1
Compare
#14120) This is seperate part for the big PR of video edit, crop, trim PR #14118 ## Summary - Optional contentInsetX maps pointer positions onto a track whose value range is horizontally inset (e.g. tracks with handle gutters) - Expose activeHandle so consumers can render per-handle UI while dragging
This is seperate part for the big PR of video edit, crop, trim PR #14118
Summary