Contribute the selection behavior onto contribution (a per-pane layer scope's contribution), as thin
delegates to the layer's SelectionNavigation handle. Mirrors contributeClipboardCommands
— a plain fn the wiring component calls, so the contributor is separately injectable. Returns a remover for
parity with the other dynamic contributors; selection has no model listeners (pure delegation), so the
commands themselves are torn down by the caller's contribution.remove().
The key inventory is the navigation's own binding map — no parallel key list to drift from it. Command
CHROME (label / description / shortcut / tags) comes from the catalog (selection.cmd.json, scope
selection); catalog keys with no binding here (and no sheet) stay chrome-only ⇒ disabled.
Contribute the selection behavior onto
contribution(a per-pane layer scope's contribution), as thin delegates to the layer's SelectionNavigation handle. Mirrors contributeClipboardCommands — a plain fn the wiring component calls, so the contributor is separately injectable. Returns a remover for parity with the other dynamic contributors; selection has no model listeners (pure delegation), so the commands themselves are torn down by the caller'scontribution.remove().The key inventory is the navigation's own binding map — no parallel key list to drift from it. Command CHROME (label / description / shortcut / tags) comes from the catalog (
selection.cmd.json, scopeselection); catalog keys with no binding here (and nosheet) stay chrome-only ⇒ disabled.