Eulergraph
    Preparing search index...

    Сервисы движка

    Для кого: интеграторы, выбирающие набор возможностей 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

    • Вызов методов сервиса до enableServicesundefined.
    • Stencil.loadLibs() без предварительного register — пустая панель.
    • Изменение CellParametric param напрямую без Editor.changeCustomParam — нет undo.