# Mouse Interaction Policy / dev-20.5.2

UnifiedSpread NativeGrid treats mouse gestures as renderer-level interactions.
They update visual selection or preview geometry first, then commit semantic changes
through the model only when the user finishes the gesture.

## Mouse range selection

- Mouse down on a cell starts a range selection gesture.
- Mouse move expands the selected range continuously.
- Mouse up finalizes the range and emits `selectionChanged`.
- If the pointer reaches the viewport edge, the grid auto-scrolls slightly so the
  user can continue selecting beyond the initially visible area.
- Merged cells are normalized to full merge rectangles to avoid partial selection
  of a merged area.

## Row height / column width resize

- Dragging a column or row resizer displays a lightweight guide line.
- The workbook model is not updated on every mousemove.
- The final width or height is committed on mouseup.
- This avoids repeated full grid rendering during drag and gives one coherent
  workbook change event / undo history point.

## Design note

This file documents why the renderer owns these interactions. They depend on DOM
hit testing, page coordinates, sticky headers and scroll positions. Host-facing
Control APIs and workbook services should receive only the completed range or
committed size, not raw pointer events.
