Seed the mouse editor from its target, and mark the target on the first edit (improvise-ugj4, improvise-jibp)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
Edward Langley
2026-09-23 08:33:40 -07:00
parent c4877456a4
commit 8747074e52
7 changed files with 105 additions and 31 deletions
+2 -3
View File
@@ -222,7 +222,6 @@ export function gridPlan(model) {
row: dataRow,
col,
text: typing ? `${model.editing}▏` : cell.text,
editText: cell.edit_text,
editable: cell.editable,
classes: {
numeric: cell.numeric && !typing,
@@ -260,7 +259,7 @@ export function gridPlan(model) {
/** What a data cell carries on its node, so one delegated handler can read
* back the answers `gridPlan` already made (improvise-b8ot, clients.md). */
export function cellAttrs(cell) {
return { row: String(cell.row), col: String(cell.col), edit: cell.editText };
return { row: String(cell.row), col: String(cell.col) };
}
/** …and the inverse: what a delegated mousedown MEANS. `null` where the event
@@ -271,7 +270,7 @@ export function cellAction(dataset, editable) {
// A node that carries no coordinates is not a cell: every header and the
// corner reach here, and none of them means anything.
if (row === null || col === null) return null;
return { row, col, editable, editText: dataset.edit ?? "" };
return { row, col, editable };
}
/** The same, for the surfaces whose rows are named by one index: the panels,