Интерфейс поверхности в браузере (Browser Surface API)
Встраивание поверхности, её установка и снятие, события для вашего приложения и текущие границы.
Запуск поверхности. $CLI — путь к процессору внутри установленного приложения, он задан на странице Установка и проверка:
"$CLI" surface --port 0 --doc /absolute/input.docx --save /absolute/output.docxЧто поверхность выставляет в окне. Имена начинаются с fastdoc — это внутреннее имя документного движка в коде, а не другой продукт: переименование в A4 их не затронуло, потому что смена имён в коде сломала бы совместимость у тех, кто уже встроил поверхность. То же и у таблиц с префиксом fastsheet.
interface HostConfig { theme?:"light"|"dark"; locale?:string; readOnly?:boolean; cssVariables?:Record<`--fastdoc-${string}`,string>; }interface Handle { container:HTMLElement; hostConfig:Readonly<HostConfig>; unmount():void; }interface FastDocSurface { version:"fastdoc.surface-mount.v1"; mount(container:HTMLElement, config?:HostConfig):Handle; unmount():void; }// window.fastdocSurface: FastDocSurfaceСобытия для вашего приложения
Заголовок раздела «События для вашего приложения»type SurfaceEvent = | {schema:"fastdoc.surface-host-event.v1";type:"ready";documentPath:string;savePath:string;theme:string;locale:string} | {schema:"fastdoc.surface-host-event.v1";type:"dirty";dirty:boolean} | {schema:"fastdoc.surface-host-event.v1";type:"saved";dirty:false;path:string;byteCount:number} | {schema:"fastdoc.surface-host-event.v1";type:"error";operation:"connect"|"save";message:string} | {schema:"fastdoc.surface-host-event.v1";type:"unmounted"};window.addEventListener("fastdoc-host-event", e => consume((e as CustomEvent<SurfaceEvent>).detail));// В WKWebView события приходят обработчику fastdocHost, в WebView2 — через WebMessageReceivedПоверхность сегодня ограничена: встраивание и снятие, чтение и правка первого абзаца, сохранение, завершение и пять событий. Произвольная структура документа, выделение и контекстное меню наружу не выведены.