UNPKG

sprotty

Version:

A next-gen framework for graphical views

97 lines 4.71 kB
/******************************************************************************** * Copyright (c) 2017-2018 TypeFox and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is available at * https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ import { Module, VNode } from 'snabbdom'; import { Action } from 'sprotty-protocol/lib/actions'; import { ILogger } from '../../utils/logging'; import { IActionDispatcher } from '../actions/action-dispatcher'; import { SModelElementImpl, SModelRootImpl, SParentElementImpl } from '../model/smodel'; import { IViewArgs, RenderingContext, RenderingTargetKind, ViewRegistry } from './view'; import { ViewerOptions } from './viewer-options'; import { IVNodePostprocessor } from './vnode-postprocessor'; export interface IViewer { update(model: SModelRootImpl, cause?: Action): void; } export interface IViewerProvider { readonly modelViewer: IViewer; readonly hiddenModelViewer: IViewer; readonly popupModelViewer: IViewer; } export declare class ModelRenderer implements RenderingContext { readonly viewRegistry: ViewRegistry; readonly targetKind: RenderingTargetKind; private postprocessors; protected args: IViewArgs; constructor(viewRegistry: ViewRegistry, targetKind: RenderingTargetKind, postprocessors: IVNodePostprocessor[], args?: IViewArgs); decorate(vnode: VNode, element: Readonly<SModelElementImpl>): VNode; renderElement(element: Readonly<SModelElementImpl>): VNode | undefined; renderChildren(element: Readonly<SParentElementImpl>, args?: IViewArgs): VNode[]; postUpdate(cause?: Action): void; } export type ModelRendererFactory = (targetKind: RenderingTargetKind, postprocessors: IVNodePostprocessor[], args?: IViewArgs) => ModelRenderer; export type Patcher = (oldRoot: VNode | Element, newRoot: VNode) => VNode; export declare class PatcherProvider { readonly patcher: Patcher; constructor(); protected createModules(): Module[]; } /** * The component that turns the model into an SVG DOM. * Uses a VDOM based on snabbdom.js for performance. */ export declare class ModelViewer implements IViewer { protected options: ViewerOptions; protected logger: ILogger; protected actiondispatcher: IActionDispatcher; constructor(modelRendererFactory: ModelRendererFactory, patcherProvider: PatcherProvider, postprocessors: IVNodePostprocessor[]); protected readonly renderer: ModelRenderer; protected readonly patcher: Patcher; protected lastVDOM: VNode; update(model: Readonly<SModelRootImpl>, cause?: Action): void; protected hasFocus(): boolean; protected restoreFocus(focus: boolean): void; protected onWindowResize(vdom: VNode): void; protected getBoundsInPage(element: Element): { x: number; y: number; width: number; height: number; }; } /** * Viewer for the _hidden_ model. This serves as an intermediate step to compute bounds * of elements. The model is rendered in a section that is not visible to the user, * and then the bounds are extracted from the DOM. */ export declare class HiddenModelViewer implements IViewer { protected options: ViewerOptions; protected logger: ILogger; constructor(modelRendererFactory: ModelRendererFactory, patcherProvider: PatcherProvider, hiddenPostprocessors: IVNodePostprocessor[]); protected readonly hiddenRenderer: ModelRenderer; protected readonly patcher: Patcher; protected lastHiddenVDOM: VNode; update(hiddenModel: Readonly<SModelRootImpl>, cause?: Action): void; } export declare class PopupModelViewer implements IViewer { protected readonly modelRendererFactory: ModelRendererFactory; protected options: ViewerOptions; protected logger: ILogger; constructor(modelRendererFactory: ModelRendererFactory, patcherProvider: PatcherProvider, popupPostprocessors: IVNodePostprocessor[]); protected readonly popupRenderer: ModelRenderer; protected readonly patcher: Patcher; protected lastPopupVDOM: VNode; update(model: Readonly<SModelRootImpl>, cause?: Action): void; } //# sourceMappingURL=viewer.d.ts.map