The input-clipboard resolve injector — copy / cut / paste / selectAll acting on the
focused DOM editable (a text input / textarea / contenteditable), for
Command.CommandResolver.addResolveInjector. Given (key, element) at resolve time it returns
a leaf contribution (callback only) iffelement is an editable and key is in the set —
otherwise undefined, so the grid's cell copy resolves normally.
Because the injected contribution is the most-specific (leaf), a focused input's copy
out-resolves the grid clipboard (fixing "editing a formula, Copy grabs the cells"), and a region
whose tree has no copy at all (the script editor) gains one (fixing "Copy disabled there") — both
with no scope-tree surgery, and identically for the button and keystroke paths (both funnel through
resolve). See design/COMMAND-INPUT-CLIPBOARD-PLAN.md.
Clipboard data flows through our own clipboard (writeText/readText), not execCommand('copy')
— so an input copy participates in the same clipboard the grid reads. execCommand is used only
as the local text-edit primitive for paste-insert / cut-delete (it mutates the focused editable at the
caret and fires a native input event, so a controlled React input picks up the change), with a
setRangeText fallback.
The input-clipboard resolve injector —
copy/cut/paste/selectAllacting on the focused DOM editable (a text input / textarea / contenteditable), for Command.CommandResolver.addResolveInjector. Given(key, element)at resolve time it returns a leaf contribution (callback only) iffelementis an editable andkeyis in the set — otherwiseundefined, so the grid's cell copy resolves normally.Because the injected contribution is the most-specific (leaf), a focused input's
copyout-resolves the grid clipboard (fixing "editing a formula, Copy grabs the cells"), and a region whose tree has nocopyat all (the script editor) gains one (fixing "Copy disabled there") — both with no scope-tree surgery, and identically for the button and keystroke paths (both funnel throughresolve). See design/COMMAND-INPUT-CLIPBOARD-PLAN.md.Clipboard data flows through our own clipboard (
writeText/readText), notexecCommand('copy')— so an input copy participates in the same clipboard the grid reads.execCommandis used only as the local text-edit primitive for paste-insert / cut-delete (it mutates the focused editable at the caret and fires a nativeinputevent, so a controlled React input picks up the change), with asetRangeTextfallback.