Surface: встраивание и события сегодня
Запуск Surface Host, mount/unmount и получение host events — что работает в текущей сборке.
5.1. Запуск Surface Host
Заголовок раздела «5.1. Запуск Surface Host»ТЕКУЩИЙ E3/E4 BOUNDARY
target/debug/A4-cli surface --port 0 \ --doc /data/input.docx --save /data/output.docx
# первая строка stdout: A4.surface-host-bootstrap.v1# загрузить bootstrap.url в WKWebView / WebView2 / browser host5.2. Mount / unmount
Заголовок раздела «5.2. Mount / unmount»ТЕКУЩИЙ BROWSER ENTRY POINT
const handle = window.a4Surface.mount(container, { theme: "light", locale: "ru", readOnly: false, cssVariables: { "--A4-accent": "#2f5bff" }});
// при закрытии вкладки или документаhandle.unmount();5.3. Получение host events
Заголовок раздела «5.3. Получение host events»GENERIC BROWSER HOST
window.addEventListener("A4-host-event", (event) => { const message = event.detail; if (message.schema !== "A4.surface-host-event.v1") return;
switch (message.type) { case "ready": console.log(message.documentPath); break; case "dirty": setUnsavedBadge(message.dirty); break; case "saved": console.log(message.path, message.byteCount); break; case "error": showError(message.operation, message.message); break; case "unmounted": releasePartnerResources(); break; }});| Среда | Канал события |
|---|---|
| WKWebView | WKScriptMessageHandler: a4Host |
| WebView2 | window.chrome.webview / WebMessageReceived |
| Browser harness | DOM CustomEvent: A4-host-event |
| Честный статус Surface Host Сегодня это bounded переносимая поверхность с mount/unmount и событиями ready/dirty/saved/error/unmounted. Она доказывает границу интеграции, но ещё не является полным внешним API всех функций редактора или расширений контекстного меню. |
|---|