@ankhzet/graph 0.4.1 → 0.5.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhzet/graph
2
2
 
3
+ ## 0.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Forward layouter prop
8
+
9
+ ## 0.5.0
10
+
11
+ ### Minor Changes
12
+
13
+ - Add layouter prop to canvas
14
+
3
15
  ## 0.4.1
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -70,6 +70,27 @@ export declare type ConnectorPoint<Node extends GraphNodeInterface, Input extend
70
70
  connector?: Connector<Node['id']>;
71
71
  });
72
72
 
73
+ export declare class Coordinates implements Coordinator {
74
+ grid: number;
75
+ gridSize: Position;
76
+ sizes: {
77
+ grid: Position;
78
+ port: number;
79
+ lane: number;
80
+ space: number;
81
+ };
82
+ constructor({ grid, port, lane, space, }?: Partial<SizeOverrides>);
83
+ snap(value: number): number;
84
+ toGraph({ x, y }: Position): {
85
+ x: number;
86
+ y: number;
87
+ };
88
+ toData({ x, y }: Position): {
89
+ x: number;
90
+ y: number;
91
+ };
92
+ }
93
+
73
94
  export declare type Coordinator = {
74
95
  grid: number;
75
96
  gridSize: Position;
@@ -135,7 +156,7 @@ export declare class GraphAdapter<Node extends GraphNodeInterface> extends Batch
135
156
 
136
157
  export declare type GraphBarrier<N extends GraphNodeInterface> = (node: N) => boolean;
137
158
 
138
- export declare function GraphCanvas<Node extends GraphNodeInterface<ID, Data, Render>, ID = any, Data = any, Render = any>({ innerRef, nodes, subset, coordinator, menu, onSelectNode, onContextMenu, ...rest }: GraphNodeProps<Node>): JSX.Element;
159
+ export declare function GraphCanvas<Node extends GraphNodeInterface<ID, Data, Render>, ID = any, Data = any, Render = any>({ innerRef, nodes, subset, coordinator, layouter, menu, onSelectNode, onContextMenu, ...rest }: GraphNodeProps<Node>): JSX.Element;
139
160
 
140
161
  declare interface GraphDTO {
141
162
  title: string;
@@ -231,6 +252,7 @@ export declare class GraphNodeJoints<ID> implements NodeJoints<ID> {
231
252
  export declare interface GraphNodeProps<Node extends GraphNodeInterface> {
232
253
  innerRef?: Ref<GraphRef<Node>>;
233
254
  coordinator: Coordinator;
255
+ layouter?: Layouter<Node>;
234
256
  nodes: Node[];
235
257
  subset?: Node['id'][];
236
258
  menu: IMenuProvider<any>;
@@ -243,12 +265,16 @@ export declare type GraphRef<Node extends GraphNodeInterface> = {
243
265
  element?: HTMLDivElement;
244
266
  };
245
267
 
268
+ export declare const GRID_SIZE = 16;
269
+
246
270
  declare interface GroupableItem<ID> {
247
271
  id: ID;
248
272
  }
249
273
 
250
274
  export declare type GroupResolver<T extends GroupableItem<any>> = (node: T) => null | undefined | ItemsGroup<T['id']>;
251
275
 
276
+ export declare const groupResolver: ({ description: { item } }: ManagedGraphNode) => string | null;
277
+
252
278
  export declare interface HitTestResult<Node extends GraphNodeInterface> extends Position {
253
279
  node: Node;
254
280
  width: number;
@@ -312,13 +338,15 @@ export declare type ItemsGroup<ID> = {
312
338
  ids: ID[];
313
339
  };
314
340
 
341
+ export declare const LANE_SIZE = 16;
342
+
315
343
  export declare interface Layer<Node extends GraphNodeInterface> {
316
344
  [id: string]: Node;
317
345
  }
318
346
 
319
347
  export declare class LayeredLayout<Node extends GraphNodeInterface> extends NodesGraph<Node> implements Layout<Node> {
348
+ #private;
320
349
  layers: Layers<Node>;
321
- private hash;
322
350
  get center(): Position;
323
351
  spread(layer: number, nodes: Node['id'][]): number;
324
352
  findMax(node: Node): number;
@@ -327,28 +355,27 @@ export declare class LayeredLayout<Node extends GraphNodeInterface> extends Node
327
355
  remove(node: Node, layer: number): boolean;
328
356
  put(node: Node, layer: number): void;
329
357
  findLayer(node: Node): number;
330
- findLayers(nodes: Node[]): Partial<Record<string, number>>;
358
+ findLayers(nodes: Node[]): Record<string, number>;
331
359
  shift(node: Node, fromLayer: number, offset: number, chain?: Node[]): number;
332
360
  private all;
333
361
  private walk;
334
362
  }
335
363
 
336
- export declare interface Layers<Node extends GraphNodeInterface> extends Iterable<Layer<Node>> {
337
- [idx: number]: Layer<Node>;
364
+ export declare interface Layers<Node extends GraphNodeInterface> extends Array<Layer<Node>> {
338
365
  }
339
366
 
340
- declare interface Layout<Node extends GraphNodeInterface<any, any>> {
367
+ declare interface Layout<Node extends GraphNodeInterface> {
341
368
  readonly center: Position;
342
369
  getSubGraphs(subset?: Node['id'][]): Node['id'][][];
343
370
  spread(layer: number, nodes: Node['id'][]): number;
344
371
  }
345
372
 
346
- export declare class Layouter<Node extends GraphNodeInterface<any, any>> {
373
+ export declare class Layouter<Node extends GraphNodeInterface> {
347
374
  private readonly isBarrier;
348
375
  private readonly klass;
349
376
  constructor(klass: Constructor<Layout<Node>, [nodes: Node[], isBarrier: GraphBarrier<Node>]>, isBarrier: GraphBarrier<Node>);
350
377
  layout(nodes: Node[], subset?: Node['id'][]): Layout<Node>;
351
- getSubGraphs(nodes: Node[]): Node["id"][][];
378
+ getSubGraphs(nodes: Node[], subset?: Node['id'][]): Node["id"][][];
352
379
  }
353
380
 
354
381
  export declare type Line = {
@@ -358,7 +385,7 @@ export declare type Line = {
358
385
  update(): void;
359
386
  };
360
387
 
361
- export declare const ManagedGraph: <Graph extends IGraph<Item>, Item extends IItem, DTO extends GraphDTO>({ innerRef, graph, selected, sizes, handlers, children, onExport, ...rest }: PropsWithChildren<ManagedGraphProps<Graph, Item, DTO>>) => JSX.Element;
388
+ export declare const ManagedGraph: <Graph extends IGraph<Item>, Item extends IItem, DTO extends GraphDTO>({ innerRef, graph, layouter, selected, sizes, handlers, children, onExport, ...rest }: PropsWithChildren<ManagedGraphProps<Graph, Item, DTO>>) => JSX.Element;
362
389
 
363
390
  export declare class ManagedGraphNode<Item extends IItem = IItem> extends GraphNode<TypeId, NodeData<Item>, Container> implements IMenuProvider<MenuAction> {
364
391
  #private;
@@ -396,6 +423,7 @@ export declare interface ManagedGraphProps<Graph extends IGraph<Item>, Item exte
396
423
  }>;
397
424
  graph: Graph;
398
425
  selected?: Item[];
426
+ layouter?: Layouter<ManagedGraphNode<Item>>;
399
427
  className?: string;
400
428
  sizes?: SizeOverrides;
401
429
  handlers?: Partial<GraphHandlers<DTO, Item>>;
@@ -528,6 +556,8 @@ declare class PIXIText extends Container {
528
556
  set tint(color: ColorSource);
529
557
  }
530
558
 
559
+ export declare const PORT_SIZE = 8;
560
+
531
561
  export declare type Position = {
532
562
  x: number;
533
563
  y: number;
@@ -609,13 +639,15 @@ export declare type RequestedConnection<ID, Node> = {
609
639
 
610
640
  export declare type Resolver<Item> = (id: TypeId) => Item | undefined;
611
641
 
612
- declare type SizeOverrides = {
642
+ export declare type SizeOverrides = {
613
643
  grid: number;
614
644
  port: number;
615
645
  lane: number;
616
646
  space: number;
617
647
  };
618
648
 
649
+ export declare const SPACE_SIZE = 32;
650
+
619
651
  export declare class Store<Item extends {
620
652
  id: TypeId;
621
653
  }> extends DisposableEventSource implements StoreInterface<Item> {