/** Angular2 */
import * as ng from "@angular/core";
/** Core */
import { CoreComponent } from "cmf.core/src/core";
/** Joint */
import "graphlib";
import "dagre";
/** Model */
import { MarkerType, MarkerDef, Vector2D, DiagramModel, DiagramNodeBase, DiagramNode, DiagramNodeWithPorts, LinkJoint, LinkLabel, DiagramLink, LayoutOptions } from "./diagramModel";
export { MarkerType, MarkerDef, Vector2D, DiagramModel, DiagramNodeBase, DiagramNode, DiagramNodeWithPorts, LinkJoint, LinkLabel, DiagramLink, LayoutOptions };
/**
* Marker type names
*/
export declare const MARKER_TYPE_NAMES: string[];
/**
* LinkPropertyType
*/
export declare enum LinkPropertyType {
LABEL = 0,
IS_DASHED = 1,
IS_SMOOTH = 2,
LINE_WIDTH = 3,
SOURCE_COLOR = 4,
SOURCE_MARKER = 5,
TARGET_COLOR = 6,
TARGET_MARKER = 7
}
/**
* @whatItDoes
* Diagram component
*
* @howToUse
* This component is used with the inputs and outputs mentioned below.
* Note that Diagram component grows to fill all available space defined by the parent. It does not have a default size.
*
* ### Inputs
* `DiagramModel` : **data** - The diagram data model (see DiagramModel in the top) ;
* `boolean` : **editable** - If the diagram is editable (by default is _true_) ;
* `boolean` : **link-appearance-editable** - If the individual link appearance can be changed (by default is _true_) .
*
* ### Outputs
* `DiagramModel` : **dataChanged** - Triggered when the _Diagram_ _Model_ change .
*
* ### Example
* To use the component, assume this HTML Template as an example:
*
* ```HTML
*
*
* ```
*
*/
export declare class Diagram extends CoreComponent implements ng.OnInit, ng.OnChanges, ng.AfterViewInit {
private _elementRef;
private _loader;
private _ngZone;
private _changeDetector;
/**
* Diagram holder div
*/
private _diagramHolder;
/**
* Diagram holder element query
*/
private _diagramContainerElementQuery;
/**
* Diagram div element ref, used
*/
private _diagram;
/**
* Marker types
*/
_markerTypesForCombobox: any[];
/**
* Link properties object for link editor
*/
_linkProperties: {
id: string;
label: string;
isDashed: boolean;
smooth: boolean;
width: number;
sourceMarker: any;
targetMarker: any;
};
/**
* Link editor properties
*/
_linkEditor: {
enabled: boolean;
x: number;
y: number;
mouseDownX: number;
mouseDownY: number;
};
/**
* Diagram Graph Paper
*/
private _paper;
/**
* Internal data model
*/
private _data;
/**
* Link current being grabbed
*/
private _grabbedLink;
/**
* MouseOperationMode
*/
private _mouseOperationMode;
/**
* Data model
*/
data: DiagramModel;
/**
* If diagram is editable
*/
editable: boolean;
/**
* If links appearance is editable
*/
linkAppearanceEditable: boolean;
/**
* Data changed event
*/
dataChanged: ng.EventEmitter;
/**
* Constructor
*/
constructor(_elementRef: ng.ElementRef, _loader: ng.NgModuleFactoryLoader, _ngZone: ng.NgZone, _changeDetector: ng.ChangeDetectorRef);
/**
* On mouse move
*/
private onMouseMove;
/**
* On mouse up
*/
onMouseUp(event: any): void;
/**
* On mouse down on "new link" tool of any node
*/
private onNewLinkNodeToolMousedown;
/**
* On node "delete"" tool clicked
*/
private onDeleteNodeToolClick;
/**
* On mouse down on link editor
*/
onLinkEditorMouseDown(event: any): void;
/**
* Open link properties editor
*/
private openLinkProperties;
/**
* Close link properties editor
*/
closeLinkProperties(event: any): void;
/**
* On link property change while editing
*/
onLinkPropertyChange(type: LinkPropertyType, value: any): void;
/**
* On graph model changed
*/
private onModelChanged;
/**
* On element remove
*/
private onModelRemoveElement;
/**
* On element add
*/
private onModelAddElement;
/**
* Emit data changes
*/
private emitChanges;
/**
* Get element of the data model by id
*/
private getDiagramElementById;
/**
* New Node
*/
private newNode;
/**
* New link
*/
private newLink;
/**
* Remove element from graph
*/
private removeElement;
/**
* Build diagram content using a data model
*/
private buildDiagramFromDataModel;
/**
* Get Marker SVG
*/
private getMarkerSVG;
/**
* Returns the svg properties object from a MarkerDef input object with the parameters
*/
private getMarkerProperties;
/**
* Add a new node to the diagram
* @param node the new node definition
* @returns the modified data model after the operation
*/
addNode(node: DiagramNode): string;
/**
* Add a new link to the diagram
* @param node the new link definition
* @returns the modified data model after the operation
*/
addLink(link: DiagramLink): string;
/**
* Removes a node from the diagram
* @param id the id of the node to remove
* @returns the modified data model after the operation
*/
removeNode(id: string): boolean;
/**
* Removes a link from the diagram
* @param id the id of the link to remove
* @returns the modified data model after the operation
*/
removeLink(id: string): boolean;
/**
* Applies an auto-layout to the diagram to rearrange the items
* @param
* @returns the modified data model after the operation
*/
applyLayout(options: LayoutOptions): DiagramModel;
/**
* After view init
*/
ngOnInit(): void;
/**
* After view init
*/
ngAfterViewInit(): void;
/**
* On changes
*/
ngOnChanges(changes: any): void;
}
/**
* Module declaration
*/
export declare class DiagramModule {
}