Перейти к содержимому
FastOffice

Hit-test, selection и правка документа

Перевод координаты клика в позицию документа, простая bounded-правка с сохранением и предпочтительная типизированная транзакция.

ТЕКУЩИЙ 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 по типам объектов.

ТЕКУЩИЙ 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 "}
}
}

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.