@cyber-harbour/ui 1.0.45 → 1.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,77 @@
1
- import { GraphData, NodeObject } from 'react-force-graph-2d';
1
+ export interface Graph2DRef {
2
+ /**
3
+ * Масштабирует график так, чтобы все узлы были видны
4
+ * @param duration Длительность анимации масштабирования в миллисекундах
5
+ * @param padding Отступ от краев в пикселях
6
+ */
7
+ zoomToFit: (duration?: number, padding?: number) => void;
8
+
9
+ /**
10
+ * Добавляет новые узлы и связи на график
11
+ * @param newNodes Массив новых узлов для добавления
12
+ * @param newLinks Массив новых связей для добавления
13
+ * @param options Опции для настройки поведения при добавлении
14
+ * - smoothAppearance: если true, существующие узлы не будут двигаться,
15
+ * а новые появятся плавно рядом со связанными узлами
16
+ * - transitionDuration: длительность анимации появления новых узлов в миллисекундах
17
+ */
18
+ addNodes: (
19
+ newNodes: NodeObject[],
20
+ newLinks?: LinkObject[],
21
+ options?: {
22
+ smoothAppearance?: boolean;
23
+ transitionDuration?: number;
24
+ }
25
+ ) => void;
26
+
27
+ /**
28
+ * Удаляет узлы и связанные с ними связи из графа
29
+ * @param nodeIds Массив идентификаторов узлов для удаления
30
+ */
31
+ removeNodes: (nodeIds: (string | number)[]) => void;
32
+ }
2
33
 
3
34
  export interface Graph2DProps {
4
- graphData?: GraphData;
5
- linkSource?: string;
6
- linkTarget?: string;
35
+ graphData: GraphData;
7
36
  loading?: boolean;
8
37
 
9
38
  // Container layout
10
- width?: number;
11
- height?: number;
12
-
13
- //custom node rendering
14
- config?: {
15
- fontSize: number;
16
- maxZoom: number;
17
- nodeSizeBase: number;
18
- nodeAreaFactor: number;
19
- textPaddingFactor: number;
20
- gridSpacing: number;
21
- dotSize: number;
22
- };
39
+ width: number;
40
+ height: number;
41
+
42
+ // Button controls
43
+ buttons?: NodeButton[];
44
+
45
+ // Event handlers
23
46
  onNodeClick?: (node: NodeObject) => void;
24
- onLinkClick?: (link: NodeObject) => void;
25
- onNodeHover?: (node: NodeObject | null) => void;
26
- onLinkHover?: (link: NodeObject | null) => void;
27
47
  onBackgroundClick?: () => void;
28
- onClickLoadNodes?: (node: NodeObject) => void;
48
+ onNodeHover?: (node: NodeObject | null) => void;
49
+ }
50
+
51
+ export interface NodeButton {
52
+ img: string;
53
+ hoverImg: string;
54
+ onClick: (node: NodeObject) => void;
29
55
  }
56
+
57
+ export type GraphData<NodeType = {}, LinkType = {}> = {
58
+ nodes: NodeObject<NodeType>[];
59
+ links: LinkObject<NodeType, LinkType>[];
60
+ };
61
+
62
+ export type NodeObject<NodeType = {}> = NodeType & {
63
+ id?: string | number;
64
+ x?: number;
65
+ y?: number;
66
+ vx?: number;
67
+ vy?: number;
68
+ fx?: number;
69
+ fy?: number;
70
+ [others: string]: any;
71
+ };
72
+
73
+ export type LinkObject<NodeType = {}, LinkType = {}> = LinkType & {
74
+ source: string | number | NodeObject<NodeType>;
75
+ target: string | number | NodeObject<NodeType>;
76
+ [others: string]: any;
77
+ };
@@ -683,6 +683,7 @@ export const darkThemePx: Theme = {
683
683
  graph2D: {
684
684
  ring: {
685
685
  highlightFill: 'rgba(0, 90, 255, 0.3)',
686
+ selectionFill: 'rgba(0, 90, 255, 0.5)',
686
687
  },
687
688
  button: {
688
689
  stroke: '#1A1A1A',
@@ -682,6 +682,7 @@ export const lightThemePx: Theme = {
682
682
  graph2D: {
683
683
  ring: {
684
684
  highlightFill: 'rgba(255, 165, 0, 0.3)',
685
+ selectionFill: 'rgba(0, 66, 236, 0.3)',
685
686
  },
686
687
  button: {
687
688
  stroke: '#e5e5e5',
@@ -212,6 +212,7 @@ export type Theme = {
212
212
  graph2D: {
213
213
  ring: {
214
214
  highlightFill: string;
215
+ selectionFill: string;
215
216
  };
216
217
  button: {
217
218
  stroke: string;
Binary file
Binary file
Binary file
Binary file