import {
Circle as GCircle,
Ellipse as GEllipse,
Group as GGroup,
HTML as GHTML,
Line as GLine,
Path as GPath,
Polygon as GPolygon,
Polyline as GPolyline,
Rect as GRect,
Text as GText,
} from '@antv/g';
import { ComboCollapse, ComboExpand, Fade, NodeCollapse, NodeExpand, PathIn, PathOut, Translate } from '../animations';
import {
AutoAdaptLabel,
BrushSelect,
ClickSelect,
CollapseExpand,
CreateEdge,
DragCanvas,
DragElement,
DragElementForce,
FixElementSize,
FocusElement,
HoverActivate,
LassoSelect,
OptimizeViewportTransform,
ScrollCanvas,
ZoomCanvas,
} from '../behaviors';
import {
Circle,
CircleCombo,
Cubic,
CubicHorizontal,
CubicRadial,
CubicVertical,
Diamond,
Donut,
Ellipse,
HTML,
Hexagon,
Image,
Line,
Polyline,
Quadratic,
Rect,
RectCombo,
Star,
Triangle,
} from '../elements';
import { Badge as BadgeShape, Image as ImageShape, Label as LabelShape } from '../elements/shapes';
import {
AntVDagreLayout,
CircularLayout,
ComboCombinedLayout,
ConcentricLayout,
D3ForceLayout,
DagreLayout,
FishboneLayout,
ForceAtlas2Layout,
ForceLayout,
FruchtermanLayout,
GridLayout,
MDSLayout,
RadialLayout,
RandomLayout,
SnakeLayout,
compactBox,
dendrogram,
indented,
mindmap,
} from '../layouts';
import { blues, greens, oranges, spectral, tableau } from '../palettes';
import {
Background,
BubbleSets,
Contextmenu,
EdgeBundling,
EdgeFilterLens,
Fisheye,
Fullscreen,
GridLine,
History,
Hull,
Legend,
Minimap,
Snapline,
Timebar,
Toolbar,
Tooltip,
Watermark,
} from '../plugins';
import { dark, light } from '../themes';
import {
ArrangeDrawOrder,
CollapseExpandCombo,
CollapseExpandNode,
GetEdgeActualEnds,
MapNodeSize,
PlaceRadialLabels,
ProcessParallelEdges,
UpdateRelatedEdge,
} from '../transforms';
import type { ExtensionRegistry } from './types';
/**
* 内置插件统一在这里注册。
* Built-in extensions are registered here.
*/
const BUILT_IN_EXTENSIONS: ExtensionRegistry = {
animation: {
'combo-collapse': ComboCollapse,
'combo-expand': ComboExpand,
'node-collapse': NodeCollapse,
'node-expand': NodeExpand,
'path-in': PathIn,
'path-out': PathOut,
fade: Fade,
translate: Translate,
},
behavior: {
'brush-select': BrushSelect,
'click-select': ClickSelect,
'collapse-expand': CollapseExpand,
'create-edge': CreateEdge,
'drag-canvas': DragCanvas,
'drag-element-force': DragElementForce,
'drag-element': DragElement,
'fix-element-size': FixElementSize,
'focus-element': FocusElement,
'hover-activate': HoverActivate,
'lasso-select': LassoSelect,
'auto-adapt-label': AutoAdaptLabel,
'optimize-viewport-transform': OptimizeViewportTransform,
'scroll-canvas': ScrollCanvas,
'zoom-canvas': ZoomCanvas,
},
combo: {
circle: CircleCombo,
rect: RectCombo,
},
edge: {
cubic: Cubic,
line: Line,
polyline: Polyline,
quadratic: Quadratic,
'cubic-horizontal': CubicHorizontal,
'cubic-radial': CubicRadial,
'cubic-vertical': CubicVertical,
},
layout: {
'antv-dagre': AntVDagreLayout,
'combo-combined': ComboCombinedLayout,
'compact-box': compactBox,
'd3-force': D3ForceLayout,
'force-atlas2': ForceAtlas2Layout,
circular: CircularLayout,
concentric: ConcentricLayout,
dagre: DagreLayout,
dendrogram,
fishbone: FishboneLayout,
force: ForceLayout,
fruchterman: FruchtermanLayout,
grid: GridLayout,
indented,
mds: MDSLayout,
mindmap,
radial: RadialLayout,
random: RandomLayout,
snake: SnakeLayout,
},
node: {
circle: Circle,
diamond: Diamond,
ellipse: Ellipse,
hexagon: Hexagon,
html: HTML,
image: Image,
rect: Rect,
star: Star,
donut: Donut,
triangle: Triangle,
},
palette: {
spectral,
tableau,
oranges,
greens,
blues,
},
theme: {
dark,
light,
},
plugin: {
'bubble-sets': BubbleSets,
'edge-bundling': EdgeBundling,
'edge-filter-lens': EdgeFilterLens,
'grid-line': GridLine,
background: Background,
contextmenu: Contextmenu,
fisheye: Fisheye,
fullscreen: Fullscreen,
history: History,
hull: Hull,
legend: Legend,
minimap: Minimap,
snapline: Snapline,
timebar: Timebar,
toolbar: Toolbar,
tooltip: Tooltip,
watermark: Watermark,
},
transform: {
'arrange-draw-order': ArrangeDrawOrder,
'collapse-expand-combo': CollapseExpandCombo,
'collapse-expand-node': CollapseExpandNode,
'get-edge-actual-ends': GetEdgeActualEnds,
'map-node-size': MapNodeSize,
'place-radial-labels': PlaceRadialLabels,
'process-parallel-edges': ProcessParallelEdges,
'update-related-edges': UpdateRelatedEdge,
},
shape: {
circle: GCircle,
ellipse: GEllipse,
group: GGroup,
html: GHTML,
image: ImageShape,
line: GLine,
path: GPath,
polygon: GPolygon,
polyline: GPolyline,
rect: GRect,
text: GText,
label: LabelShape,
badge: BadgeShape,
},
};
import type { ExtensionCategory } from '../constants';
import { register } from './register';
/**
* 注册内置扩展
*
* Register built-in extensions
*/
export function registerBuiltInExtensions() {
Object.entries(BUILT_IN_EXTENSIONS).forEach(([category, extensions]) => {
Object.entries(extensions).forEach(([type, extension]) => {
register(category as ExtensionCategory, type, extension as any);
});
});
}