Для кого: интеграторы, выбирающие набор возможностей host-приложения.
Что получите: обзор всех сервисов, примеры enableServices, ключевые API.
Предварительные знания: Быстрый старт.
import { supportedServises } from "@eulergraph/index"
// Все сервисы
engine.enableServices(supportedServises)
// Выборочно
engine.enableServices(["Editor", "Stencil", "DrawService"])
// Проверка
engine.getActiveServices() // string[]
engine.services.Editor // Editor | undefined
При изменении набора эмитится services_changed.
const LICENSE_OPTIONS = {
full: supportedServises,
common: ["LayersManager", "Stencil", "TextEditor", "Editor", "CopyPasteService", "SaveService", "ImportService"],
viewer: [],
importer: ["ImportService"],
}
| Сервис | Назначение | Когда включать |
|---|---|---|
Editor |
Выделение, transform, контекстное меню | Редактор |
DrawService |
Рисование primitives на canvas | Режим draw |
Stencil |
Панель библиотек, drag shapes | Библиотеки элементов |
SnapService |
Привязки при перемещении/рисовании | CAD-подобный UX |
CommandManager |
Undo/redo | Редактор с историей |
LayersManager |
Слои сцены | Многослойные документы |
TextEditor |
Редактирование текста на cell | Текстовые блоки |
CopyPasteService |
Копирование/вставка | Редактор |
SaveService |
Сохранение/открытие файла | Persistence |
ExportService |
SVG, PNG/JPG | Экспорт |
ImportService |
Импорт внешних форматов | Импорт |
PrintPreview |
Печать | Print UI |
ThemeService |
Темы оформления | Кастомизация UI |
Charts |
Chart.js shapes | Графики |
CommentManager |
Комментарии на сцене | Review |
Effects |
Визуальные эффекты | Оформление |
Layout |
Авто-layout | Диаграммы |
TableEditService |
Редактирование TableEditable | Таблицы |
AnimationService |
Анимации | Спец. сценарии |
ExtPluginsManager |
Внешние плагины | Расширяемость |
import type { ParamData } from "@eulergraph/types"
// param — объект ParamData из cell.paramData / getParamData()
const param = rect.paramData.find((p) => p.name === "width") as ParamData
engine.services.Editor?.changeCustomParam(param, 120)
// Для undo — только через Editor, не напрямую на cell
import { Mode } from "@eulergraph/types"
engine.mode = Mode.draw
engine.services.DrawService!.figure = "rectangle"
engine.registerStandardLibs()
engine.services.Stencil?.register(myLib)
engine.services.Stencil?.loadLibs()
const groups = engine.services.Stencil?.getSortedLibGroups()
// или подписка: engine.on("libs_updated", (groups) => { ... })
engine.services.CommandManager?.undo()
engine.services.CommandManager?.redo()
engine.on("undoRedo", ({ hasUndo, hasRedo }) => { /* UI */ })
const layers = engine.currentScene?.layers
engine.on("layers_changed", ({ layers }) => { /* UI */ })
См. Экспорт и импорт.
Минимальный набор для просмотра без редактирования:
engine.enableServices([]) // или viewer preset
// addScene, load JSON, render — без Editor/DrawService
enableServices — undefined.Stencil.loadLibs() без предварительного register — пустая панель.CellParametric param напрямую без Editor.changeCustomParam — нет undo.