ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
458 lines (434 loc) • 17.5 kB
TypeScript
import { HierarchyGraphDef, HierarchyGraphNodeDef, HierarchyGraphEdgeDef, HierarchyGraphOption, HierarchyGraphNodeInfo, HierarchyBaseNodeInfo, HierarchyBaseEdgeInfo, LayoutConfig } from 'dagre-compound';
import { NzSafeAny } from 'ng-zorro-antd/core/types';
import { SelectionModel } from '@angular/cdk/collections';
import { Observable, ReplaySubject } from 'rxjs';
import * as i0 from '@angular/core';
import { EventEmitter, OnInit, TemplateRef, AfterViewInit, OnChanges, AfterContentChecked, QueryList, ElementRef, SimpleChanges, NgZone } from '@angular/core';
import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';
import { Selection } from 'd3-selection';
import { ZoomBehavior, ZoomTransform } from 'd3-zoom';
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
declare enum NzGraphEdgeType {
LINE = "line",
CURVE = "curve"
}
interface NzGraphDataDef extends HierarchyGraphDef {
nodes: NzGraphNodeDef[];
edges: NzGraphEdgeDef[];
}
interface NzGraphNodeDef extends HierarchyGraphNodeDef {
label?: string;
}
interface NzGraphEdgeDef extends HierarchyGraphEdgeDef {
label?: string;
}
interface NzGraphOption extends HierarchyGraphOption {
}
declare type NzRankDirection = 'TB' | 'BT' | 'LR' | 'RL';
interface NzGraphGroupNode extends HierarchyGraphNodeInfo {
nodes: Array<NzGraphNode | NzGraphGroupNode>;
edges: NzGraphEdge[];
[key: string]: NzSafeAny;
}
interface NzGraphNode extends HierarchyBaseNodeInfo {
id: NzSafeAny;
name: NzSafeAny;
label?: string;
[key: string]: NzSafeAny;
}
interface NzGraphEdge extends HierarchyBaseEdgeInfo {
id: NzSafeAny;
v: NzSafeAny;
w: NzSafeAny;
label?: string;
}
interface NzLayoutSetting extends LayoutConfig {
}
interface NzGraphBaseLayout {
layout: {
nodeSep: number;
rankSep: number;
edgeSep: number;
};
subScene: {
paddingTop: number;
paddingBottom: number;
paddingLeft: number;
paddingRight: number;
labelHeight: number;
};
defaultCompoundNode: {
width: number;
height: number;
maxLabelWidth: number;
};
defaultNode: {
width: number;
height: number;
labelOffset: number;
maxLabelWidth: number;
};
defaultEdge: {
type: NzGraphEdgeType | string;
};
}
declare function nzTypeDefinition<T>(): (item: unknown) => T;
type NzDeepPartial<T> = {
[P in keyof T]?: T[P] extends Array<infer U> ? Array<NzDeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<NzDeepPartial<U>> : NzDeepPartial<T[P]>;
};
type NzGraphLayoutConfig = NzDeepPartial<NzGraphBaseLayout>;
declare const NZ_GRAPH_LAYOUT_SETTING: NzLayoutSetting;
interface NzZoomTransform {
x: number;
y: number;
k: number;
}
interface RelativePositionInfo {
topLeft: {
x: number;
y: number;
};
bottomRight: {
x: number;
y: number;
};
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
interface NzGraphBaseSource<T, K> {
/** The saved graph nodes data for `expandAll` action. */
dataSource: T;
/** The expansion model */
expansionModel: SelectionModel<K>;
/** Whether the data node is expanded or collapsed. Return true if it's expanded. */
isExpanded(dataNode: K): boolean;
/** Expand or collapse data node */
toggle(dataNode: K): void;
/** Expand one data node */
expand(dataNode: K): void;
/** Collapse one data node */
collapse(dataNode: K): void;
/** Expand all the dataNodes in the tree */
expandAll(): void;
/** Collapse all the dataNodes in the tree */
collapseAll(): void;
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
declare class NzGraphData implements NzGraphBaseSource<NzGraphDataDef, string> {
private _data;
dataSource: NzGraphDataDef;
/** A selection model with multi-selection to track expansion status. */
expansionModel: SelectionModel<string>;
/** Toggles one single data node's expanded/collapsed state. */
toggle(nodeName: string): void;
/** Expands one single data node. */
expand(nodeName: string): void;
/** Collapses one single data node. */
collapse(nodeName: string): void;
/** Whether a given data node is expanded or not. Returns true if the data node is expanded. */
isExpanded(nodeName: string): boolean;
/** Collapse all dataNodes in the tree. */
collapseAll(): void;
expandAll(): void;
setData(data: NzGraphDataDef): void;
constructor(source?: NzGraphDataDef);
connect(): Observable<NzGraphDataDef>;
disconnect(): void;
private findParents;
private findChildren;
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
/**
* https://angular.io/errors/NG3003
* An intermediate interface for {@link NzGraphComponent} & {@link NzGraphNodeComponent}
*/
declare abstract class NzGraph {
abstract nzNodeClick: EventEmitter<NzGraphNode | NzGraphGroupNode>;
}
interface Info {
x: number;
y: number;
width: number;
height: number;
}
declare class NzGraphNodeComponent implements OnInit {
private readonly ngZone;
private readonly el;
private readonly builder;
private readonly renderer2;
private readonly graphComponent;
private readonly destroyRef;
node: NzGraphNode | NzGraphGroupNode;
noAnimation?: boolean;
customTemplate?: TemplateRef<{
$implicit: NzGraphNode | NzGraphGroupNode;
}>;
animationInfo: Info | null;
initialState: boolean;
private animationPlayer;
ngOnInit(): void;
makeAnimation(): Observable<void>;
makeNoAnimation(): void;
getAnimationInfo(): Info;
nodeTransform(): {
x: number;
y: number;
};
computeCXPositionOfNodeShape(): number;
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphNodeComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NzGraphNodeComponent, "[nz-graph-node]", never, { "node": { "alias": "node"; "required": false; }; "noAnimation": { "alias": "noAnimation"; "required": false; }; "customTemplate": { "alias": "customTemplate"; "required": false; }; }, {}, never, never, true, never>;
static ngAcceptInputType_noAnimation: unknown;
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
declare class NzGraphZoomDirective implements AfterViewInit {
private destroyRef;
private cdr;
private element;
nzZoom?: number;
nzMinZoom: number;
nzMaxZoom: number;
readonly nzTransformEvent: EventEmitter<NzZoomTransform>;
readonly nzZoomChange: EventEmitter<number>;
svgSelection: Selection<NzSafeAny, NzSafeAny, NzSafeAny, NzSafeAny>;
zoomBehavior: ZoomBehavior<NzSafeAny, NzSafeAny>;
svgElement: SVGSVGElement;
gZoomElement: SVGGElement;
constructor();
ngAfterViewInit(): void;
bind(): void;
unbind(): void;
fitCenter(duration?: number): void;
focus(id: NzSafeAny, duration?: number): void;
/**
* Handle zoom event
*
* @param transform
*/
private zoomed;
/**
* Scale with zoom and duration
*
* @param duration
* @param scale
* @private
*/
private reScale;
private getRelativePositionInfo;
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphZoomDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NzGraphZoomDirective, "[nz-graph-zoom]", ["nzGraphZoom"], { "nzZoom": { "alias": "nzZoom"; "required": false; }; "nzMinZoom": { "alias": "nzMinZoom"; "required": false; }; "nzMaxZoom": { "alias": "nzMaxZoom"; "required": false; }; }, { "nzTransformEvent": "nzTransformEvent"; "nzZoomChange": "nzZoomChange"; }, never, never, true, never>;
static ngAcceptInputType_nzZoom: unknown;
}
/** Checks whether an object is a data source. */
declare function isDataSource(value: NzSafeAny): value is NzGraphData;
declare class NzGraphComponent implements OnInit, OnChanges, AfterContentChecked, NzGraph {
private cdr;
private elementRef;
private destroyRef;
listOfNodeElement: QueryList<ElementRef>;
listOfNodeComponent: QueryList<NzGraphNodeComponent>;
nodeTemplate?: TemplateRef<{
$implicit: NzGraphNode;
}>;
groupNodeTemplate?: TemplateRef<{
$implicit: NzGraphGroupNode;
}>;
customGraphEdgeTemplate?: TemplateRef<{
$implicit: NzGraphEdge;
}>;
/**
* Provides a stream containing the latest data array to render.
* Data source can be an observable of NzGraphData, or a NzGraphData to render.
*/
nzGraphData: NzGraphData;
nzRankDirection: NzRankDirection;
nzGraphLayoutConfig?: NzGraphLayoutConfig;
nzAutoSize: boolean;
readonly nzGraphInitialized: EventEmitter<NzGraphComponent>;
readonly nzGraphRendered: EventEmitter<NzGraphComponent>;
readonly nzNodeClick: EventEmitter<NzGraphGroupNode | NzGraphNode>;
requestId: number;
transformStyle: string;
graphRenderedSubject$: ReplaySubject<void>;
renderInfo: NzGraphGroupNode;
mapOfNodeAttr: Record<string, NzGraphNodeDef>;
mapOfEdgeAttr: Record<string, NzGraphEdgeDef>;
zoom: number;
readonly typedNodes: (item: unknown) => (NzGraphGroupNode | NzGraphNode)[];
private dataSource?;
private layoutSetting;
/** Data subscription */
private _dataSubscription?;
edgeTrackByFun: (edge: NzGraphEdge) => string;
subGraphTransform: (node: NzGraphGroupNode) => string;
$asNzGraphEdges: (data: unknown) => NzGraphEdge[];
coreTransform: (node: NzGraphGroupNode) => string;
noAnimation: NzNoAnimationDirective | null;
nzGraphZoom: NzGraphZoomDirective | null;
constructor();
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngAfterContentChecked(): void;
/**
* Move graph to center and scale automatically
*/
fitCenter(): void;
/**
* re-Draw graph
*
* @param data
* @param options
* @param needResize
*/
drawGraph(data: NzGraphDataDef, options: NzGraphOption, needResize?: boolean): Promise<void>;
/**
* Redraw all nodes
*
* @param animate
*/
drawNodes(animate?: boolean): Promise<void>;
private resizeNodeSize;
/**
* Switch to the provided data source by resetting the data and unsubscribing from the current
* render change subscription if one exists. If the data source is null, interpret this by
* clearing the node outlet. Otherwise start listening for new data.
*/
private _switchDataSource;
/** Set up a subscription for the data provided by the data source. */
private observeRenderChanges;
/**
* Get renderInfo and prepare some data
*
* @param data
* @param options
* @private
*/
private buildGraphInfo;
/**
* Play with animation
*
* @private
*/
private makeNodesAnimation;
private parseInfo;
/**
* Merge config with user inputs
*
* @param config
* @private
*/
private mergeConfig;
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NzGraphComponent, "nz-graph", ["nzGraph"], { "nzGraphData": { "alias": "nzGraphData"; "required": false; }; "nzRankDirection": { "alias": "nzRankDirection"; "required": false; }; "nzGraphLayoutConfig": { "alias": "nzGraphLayoutConfig"; "required": false; }; "nzAutoSize": { "alias": "nzAutoSize"; "required": false; }; }, { "nzGraphInitialized": "nzGraphInitialized"; "nzGraphRendered": "nzGraphRendered"; "nzNodeClick": "nzNodeClick"; }, ["nodeTemplate", "groupNodeTemplate", "customGraphEdgeTemplate"], ["*"], true, never>;
static ngAcceptInputType_nzAutoSize: unknown;
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
declare class Minimap {
private ngZone;
private svg;
private zoomG;
private mainZoom;
private minimap;
private maxWidth;
private labelPadding;
private canvas;
private canvasRect;
private canvasBuffer;
private minimapSvg;
private viewpoint;
private scaleMinimap;
private scaleMain;
private translate;
private viewpointCoord;
private minimapSize;
private unlisteners;
constructor(ngZone: NgZone, svg: SVGSVGElement, zoomG: SVGGElement, mainZoom: ZoomBehavior<NzSafeAny, NzSafeAny>, minimap: HTMLElement, maxWidth: number, labelPadding: number);
destroy(): void;
private minimapOffset;
private updateViewpoint;
update(): void;
/**
* Handles changes in zooming/panning. Should be called from the main svg
* to notify that a zoom/pan was performed, and this minimap will update its
* viewpoint rectangle.
*
* @param transform
*/
zoom(transform?: ZoomTransform | NzZoomTransform): void;
}
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
declare class NzGraphMinimapComponent {
private elementRef;
private ngZone;
private destroyRef;
minimap?: Minimap;
constructor();
init(containerEle: ElementRef, zoomBehavior: ZoomBehavior<NzSafeAny, NzSafeAny>): void;
zoom(transform: NzZoomTransform): void;
update(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphMinimapComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NzGraphMinimapComponent, "nz-graph-minimap", never, {}, {}, never, never, true, never>;
}
declare class NzGraphDefsComponent {
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphDefsComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NzGraphDefsComponent, "svg:defs[nz-graph-defs]", never, {}, {}, never, never, true, never>;
}
declare class NzGraphNodeDirective {
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphNodeDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NzGraphNodeDirective, "[nzGraphNode]", ["nzGraphNode"], {}, {}, never, never, true, never>;
}
declare class NzGraphGroupNodeDirective {
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphGroupNodeDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NzGraphGroupNodeDirective, "[nzGraphGroupNode]", ["nzGraphGroupNode"], {}, {}, never, never, true, never>;
}
declare class NzGraphEdgeComponent implements OnInit, OnChanges {
private injector;
private cdr;
edge: NzGraphEdge;
edgeType?: NzGraphEdgeType | string;
customTemplate?: TemplateRef<{
$implicit: NzGraphEdge;
}>;
get id(): string;
private el;
private path;
private line;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
initElementStyle(): void;
setLine(): void;
setPath(d: string): void;
setElementData(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphEdgeComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NzGraphEdgeComponent, "[nz-graph-edge]", never, { "edge": { "alias": "edge"; "required": false; }; "edgeType": { "alias": "edgeType"; "required": false; }; "customTemplate": { "alias": "customTemplate"; "required": false; }; }, {}, never, never, true, never>;
}
declare class NzGraphEdgeDirective {
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphEdgeDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NzGraphEdgeDirective, "[nzGraphEdge]", ["nzGraphEdge"], {}, {}, never, never, true, never>;
}
declare class NzGraphModule {
static ɵfac: i0.ɵɵFactoryDeclaration<NzGraphModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<NzGraphModule, never, [typeof NzGraphComponent, typeof NzGraphMinimapComponent, typeof NzGraphDefsComponent, typeof NzGraphNodeDirective, typeof NzGraphGroupNodeDirective, typeof NzGraphZoomDirective, typeof NzGraphNodeComponent, typeof NzGraphEdgeComponent, typeof NzGraphEdgeDirective], [typeof NzGraphComponent, typeof NzGraphMinimapComponent, typeof NzGraphDefsComponent, typeof NzGraphNodeDirective, typeof NzGraphGroupNodeDirective, typeof NzGraphZoomDirective, typeof NzGraphNodeComponent, typeof NzGraphEdgeComponent, typeof NzGraphEdgeDirective]>;
static ɵinj: i0.ɵɵInjectorDeclaration<NzGraphModule>;
}
export { NZ_GRAPH_LAYOUT_SETTING, NzGraphComponent, NzGraphData, NzGraphDefsComponent, NzGraphEdgeComponent, NzGraphEdgeDirective, NzGraphEdgeType, NzGraphGroupNodeDirective, NzGraphMinimapComponent, NzGraphModule, NzGraphNodeComponent, NzGraphNodeDirective, NzGraphZoomDirective, isDataSource, nzTypeDefinition };
export type { NzDeepPartial, NzGraphBaseLayout, NzGraphBaseSource, NzGraphDataDef, NzGraphEdge, NzGraphEdgeDef, NzGraphGroupNode, NzGraphLayoutConfig, NzGraphNode, NzGraphNodeDef, NzGraphOption, NzLayoutSetting, NzRankDirection, NzZoomTransform, RelativePositionInfo };