Hit-test, selection и правка документа
Перевод координаты клика в позицию документа, простая bounded-правка с сохранением и предпочтительная типизированная транзакция.
4.1. Координата → позиция документа
Заголовок раздела «4.1. Координата → позиция документа»ТЕКУЩИЙ CLI HIT-TEST; КООРДИНАТЫ — MILLI-PX
target/debug/A4-cli hit-test-docx /data/contract.docx \ --x 100000 --y 100000 --format jsonФАКТИЧЕСКИЙ BOUNDED-ОТВЕТ
{ "model_version": "A4-d6-hit-test-snapshot-v2", "hit_test_mode": "body-line-boxes-line-edge-caret-only", "result_kind": "body-line-hit", "page_index": 0, "paragraph_index": 0, "paragraph_location": "word/document.xml:body.block[0]", "line_index": 0, "caret_slot_index": 1, "line_scene_x_milli_px": 96000, "line_scene_y_milli_px": 96000}| Ограничение текущего публичного пути Этот standalone hit-test честно маркирует режим body-line-boxes-line-edge-caret-only. В generated persistent SessionCommand команды hit-test сейчас нет. Полный Electron умеет дополнительные text/table-cell hit routes, но их экспорт в session API должен быть capability-gated по типам объектов. |
|---|
4.2. Простая bounded-правка и сохранение
Заголовок раздела «4.2. Простая bounded-правка и сохранение»ТЕКУЩИЙ WIRE PROTOCOL
{"id":"edit-1","cmd":"mutate", "operation_kind":"insert-text","paragraph_index":0, "offset":7,"text":"A4 "}{"id":"save-1","cmd":"save","path":"/data/contract-edited.docx"}4.3. Предпочтительная типизированная транзакция
Заголовок раздела «4.3. Предпочтительная типизированная транзакция»ТЕКУЩИЙ ТИПИЗИРОВАННЫЙ REQUEST SHAPE
{ "id": "tx-1", "cmd": "apply-text-transaction", "request": { "request_id": "req-8", "document_id": "contract-42", "session_id": "session-1", "view_id": "canvas-1", "expected_revision": 42, "expected_selection_revision": 17, "command": {"type":"insert_text", "at":{"story_id":"body", "node_id":"paragraph:body.block[0]", "utf16_offset":7,"affinity":"downstream"}, "text":"A4 "} }}