@next-bricks/diagram 0.62.2 → 0.63.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.
Files changed (71) hide show
  1. package/dist/bricks.json +3 -3
  2. package/dist/chunks/{1889.a5a21c16.js → 1889.cd9c8220.js} +2 -2
  3. package/dist/chunks/{1889.a5a21c16.js.map → 1889.cd9c8220.js.map} +1 -1
  4. package/dist/chunks/{5552.5435b269.js → 3171.4e111cd1.js} +2 -2
  5. package/dist/chunks/{5552.5435b269.js.map → 3171.4e111cd1.js.map} +1 -1
  6. package/dist/chunks/3233.df97f221.js +3 -0
  7. package/dist/chunks/{3233.941a4709.js.map → 3233.df97f221.js.map} +1 -1
  8. package/dist/chunks/{3933.a17e8eee.js → 3933.e47efe53.js} +2 -2
  9. package/dist/chunks/{3933.a17e8eee.js.map → 3933.e47efe53.js.map} +1 -1
  10. package/dist/chunks/4837.11c3f298.js +2 -0
  11. package/dist/chunks/{4837.c9d5ffd2.js.map → 4837.11c3f298.js.map} +1 -1
  12. package/dist/chunks/{3171.5a8dfbd7.js → 5552.c1fe77c8.js} +2 -2
  13. package/dist/chunks/{3171.5a8dfbd7.js.map → 5552.c1fe77c8.js.map} +1 -1
  14. package/dist/chunks/{6314.d7fb300d.js → 6314.449f20cc.js} +2 -2
  15. package/dist/chunks/{6314.d7fb300d.js.map → 6314.449f20cc.js.map} +1 -1
  16. package/dist/chunks/{9789.61a352b0.js → 6730.b6d7107a.js} +2 -2
  17. package/dist/chunks/{9789.61a352b0.js.map → 6730.b6d7107a.js.map} +1 -1
  18. package/dist/chunks/6773.ef4413a1.js +2 -0
  19. package/dist/chunks/6773.ef4413a1.js.map +1 -0
  20. package/dist/chunks/7218.3d3b9880.js +2 -0
  21. package/dist/chunks/{7218.84b9d5ad.js.map → 7218.3d3b9880.js.map} +1 -1
  22. package/dist/chunks/8522.4ebca6d8.js +2 -0
  23. package/dist/chunks/8522.4ebca6d8.js.map +1 -0
  24. package/dist/chunks/871.cf918ecb.js +2 -0
  25. package/dist/chunks/871.cf918ecb.js.map +1 -0
  26. package/dist/chunks/9140.08761fe0.js +3 -0
  27. package/dist/chunks/9140.08761fe0.js.map +1 -0
  28. package/dist/chunks/{9515.fa372b62.js → 9515.2b74919b.js} +2 -2
  29. package/dist/chunks/9515.2b74919b.js.map +1 -0
  30. package/dist/chunks/{9711.ee9443b1.js → 9711.522aa912.js} +2 -2
  31. package/dist/chunks/9711.522aa912.js.map +1 -0
  32. package/dist/chunks/eo-display-canvas.c67d5a35.js +2 -0
  33. package/dist/chunks/eo-display-canvas.c67d5a35.js.map +1 -0
  34. package/dist/chunks/{eo-draw-canvas.b0a01d80.js → eo-draw-canvas.7caa4a7d.js} +2 -2
  35. package/dist/chunks/{eo-draw-canvas.b0a01d80.js.map → eo-draw-canvas.7caa4a7d.js.map} +1 -1
  36. package/dist/chunks/main.88d25460.js +2 -0
  37. package/dist/chunks/{main.60658a93.js.map → main.88d25460.js.map} +1 -1
  38. package/dist/examples.json +3 -3
  39. package/dist/index.3dc8e366.js +2 -0
  40. package/dist/{index.4eb26edb.js.map → index.3dc8e366.js.map} +1 -1
  41. package/dist/manifest.json +180 -165
  42. package/dist/types.json +5362 -4886
  43. package/dist-types/diagram/interfaces.d.ts +12 -8
  44. package/dist-types/display-canvas/index.d.ts +6 -8
  45. package/dist-types/draw-canvas/constants.d.ts +1 -0
  46. package/dist-types/draw-canvas/interfaces.d.ts +41 -9
  47. package/dist-types/draw-canvas/processors/transformToCenter.d.ts +2 -6
  48. package/dist-types/shared/canvas/processors/getCellsRect.d.ts +2 -0
  49. package/dist-types/shared/canvas/processors/getTransformToCenter.d.ts +9 -0
  50. package/dist-types/shared/canvas/useAutoCenter.d.ts +5 -3
  51. package/dist-types/shared/canvas/useLayout.d.ts +3 -2
  52. package/package.json +2 -2
  53. package/dist/chunks/3233.941a4709.js +0 -3
  54. package/dist/chunks/4837.c9d5ffd2.js +0 -2
  55. package/dist/chunks/6773.fe170705.js +0 -2
  56. package/dist/chunks/6773.fe170705.js.map +0 -1
  57. package/dist/chunks/7218.84b9d5ad.js +0 -2
  58. package/dist/chunks/7770.c839e46e.js +0 -2
  59. package/dist/chunks/7770.c839e46e.js.map +0 -1
  60. package/dist/chunks/871.e9d9ff80.js +0 -2
  61. package/dist/chunks/871.e9d9ff80.js.map +0 -1
  62. package/dist/chunks/9140.6ada4433.js +0 -3
  63. package/dist/chunks/9140.6ada4433.js.map +0 -1
  64. package/dist/chunks/9515.fa372b62.js.map +0 -1
  65. package/dist/chunks/9711.ee9443b1.js.map +0 -1
  66. package/dist/chunks/eo-display-canvas.babce82c.js +0 -2
  67. package/dist/chunks/eo-display-canvas.babce82c.js.map +0 -1
  68. package/dist/chunks/main.60658a93.js +0 -2
  69. package/dist/index.4eb26edb.js +0 -2
  70. /package/dist/chunks/{3233.941a4709.js.LICENSE.txt → 3233.df97f221.js.LICENSE.txt} +0 -0
  71. /package/dist/chunks/{9140.6ada4433.js.LICENSE.txt → 9140.08761fe0.js.LICENSE.txt} +0 -0
@@ -132,20 +132,24 @@ export interface LineConfOverridable {
132
132
  strokeWidth?: number;
133
133
  interactStrokeWidth?: number;
134
134
  }
135
- export interface LineLabelConf {
135
+ export interface LineLabelConf extends LabelOrTextBaseOptions {
136
136
  if?: string | boolean | null;
137
137
  useBrick: UseSingleBrickConf;
138
- placement?: LineLabelPlacement;
139
- /**
140
- * 当 placement 设置为 start 或 end 时,默认情况下,文本中心点与连线起点或终点重合。
141
- * 设置 offset 表示文本中心点距离起点或终点在连线上的偏移量。
142
- */
143
- offset?: number;
144
138
  }
145
- export interface TextOptions {
139
+ export interface TextOptions extends LabelOrTextBaseOptions {
146
140
  content: string;
147
141
  style?: CSSProperties;
142
+ }
143
+ export interface LabelOrTextBaseOptions {
144
+ /**
145
+ * @default "center"
146
+ */
148
147
  placement?: LineLabelPlacement;
148
+ /**
149
+ * 根据 placement 的不同,设置 offset 分别表示文本中心点距离连线的起点、中心点或终点的偏移量。
150
+ *
151
+ * @default 0
152
+ */
149
153
  offset?: number;
150
154
  }
151
155
  export type LineLabelPlacement = "center" | "start" | "end";
@@ -2,11 +2,12 @@ import React from "react";
2
2
  import { ReactNextElement } from "@next-core/react-element";
3
3
  import "@next-core/theme";
4
4
  import type { RangeTuple, SizeTuple } from "../diagram/interfaces";
5
- import type { ActiveTarget, InitialCell, NodeBrickConf, CellContextMenuDetail, EdgeLineConf, LayoutType, LayoutOptions } from "../draw-canvas/interfaces";
5
+ import type { ActiveTarget, InitialCell, NodeBrickConf, EdgeLineConf, LayoutType, LayoutOptions, AutoSize } from "../draw-canvas/interfaces";
6
6
  export interface EoDisplayCanvasProps {
7
7
  cells: InitialCell[] | undefined;
8
8
  layout: LayoutType;
9
9
  layoutOptions?: LayoutOptions;
10
+ autoSize?: AutoSize;
10
11
  defaultNodeSize: SizeTuple;
11
12
  defaultNodeBricks?: NodeBrickConf[];
12
13
  defaultEdgeLines?: EdgeLineConf[];
@@ -22,6 +23,7 @@ export interface EoDisplayCanvasProps {
22
23
  autoCenterWhenCellsChange?: boolean;
23
24
  doNotResetActiveTargetForSelector?: string;
24
25
  doNotResetActiveTargetOutsideCanvas?: boolean;
26
+ extraStyleTexts?: string[];
25
27
  }
26
28
  /**
27
29
  * 用于展示查看的画布。
@@ -34,6 +36,7 @@ export declare class EoDisplayCanvas extends ReactNextElement implements EoDispl
34
36
  accessor cells: InitialCell[] | undefined;
35
37
  accessor layout: LayoutType;
36
38
  accessor layoutOptions: LayoutOptions | undefined;
39
+ accessor autoSize: AutoSize | undefined;
37
40
  accessor defaultNodeSize: SizeTuple;
38
41
  accessor defaultNodeBricks: NodeBrickConf[] | undefined;
39
42
  /**
@@ -83,12 +86,7 @@ export declare class EoDisplayCanvas extends ReactNextElement implements EoDispl
83
86
  * 在画布外点击时不重置 `activeTarget`。
84
87
  */
85
88
  accessor doNotResetActiveTargetOutsideCanvas: boolean | undefined;
89
+ accessor extraStyleTexts: string[] | undefined;
90
+ center(): void;
86
91
  render(): React.JSX.Element;
87
92
  }
88
- export interface EoDisplayCanvasComponentProps extends EoDisplayCanvasProps {
89
- shadowRoot: ShadowRoot;
90
- onActiveTargetChange(target: ActiveTarget | null): void;
91
- onSwitchActiveTarget(target: ActiveTarget | null): void;
92
- onCellContextMenu(detail: CellContextMenuDetail): void;
93
- onCellClick(detail: CellContextMenuDetail): void;
94
- }
@@ -22,5 +22,6 @@ export declare const DEFAULT_SNAP_OBJECT_POSITIONS = "all";
22
22
  export declare const DEFAULT_NODE_PADDING_FOR_LINES = 5;
23
23
  /** Padding left + padding right, as well as top + bottom */
24
24
  export declare const DEFAULT_NODE_PADDING_FOR_SMART_LINES = 0;
25
+ export declare const DEFAULT_CANVAS_PADDING = 0;
25
26
  export declare const POINT_HELPER_RADIUS = 5;
26
27
  export declare const DEFAULT_MOTION_SPEED = 50;
@@ -1,16 +1,26 @@
1
1
  import type { UseSingleBrickConf } from "@next-core/react-runtime";
2
2
  import type { SimulationLinkDatum, SimulationNodeDatum } from "d3-force";
3
- import type { CSSProperties } from "react";
3
+ import type { CSSProperties, FunctionComponent } from "react";
4
4
  import type { ResizeCellPayload } from "./reducers/interfaces";
5
5
  import type { CurveType, LineLabelConf, LineMarkerConf, LineMarkerType, NodePosition, PartialRectTuple, PositionTuple, TextOptions, TransformLiteral } from "../diagram/interfaces";
6
6
  import type { SYMBOL_FOR_SIZE_INITIALIZED, SYMBOL_FOR_LAYOUT_INITIALIZED } from "./constants";
7
7
  export type Cell = NodeCell | EdgeCell | DecoratorCell;
8
8
  export type BrickCell = NodeBrickCell;
9
- export type NodeCell = NodeBrickCell;
9
+ export type NodeCell = NodeBrickCell | NodeComponentCell;
10
10
  export type NodeBrickCell = BaseBrickCell & BaseNodeCell;
11
+ export interface NodeComponentCell extends BaseNodeCell {
12
+ component?: NodeComponent;
13
+ }
14
+ export type NodeComponent = FunctionComponent<{
15
+ node: {
16
+ id: NodeId;
17
+ data: any;
18
+ locked?: boolean;
19
+ };
20
+ refCallback?: (element: HTMLElement | null) => void;
21
+ }>;
11
22
  export type NodeId = string;
12
23
  export interface BaseBrickCell extends BaseCell {
13
- tag?: "brick";
14
24
  useBrick?: UseSingleBrickConf;
15
25
  }
16
26
  export interface BaseNodeCell extends BaseCell {
@@ -79,7 +89,8 @@ export type InitialNodeCell = Omit<NodeCell, "view"> & {
79
89
  };
80
90
  export type InitialCell = InitialNodeCell | EdgeCell | DecoratorCell;
81
91
  export interface NodeBrickConf {
82
- useBrick: UseSingleBrickConf;
92
+ useBrick?: UseSingleBrickConf;
93
+ component?: NodeComponent;
83
94
  if?: string | boolean | null;
84
95
  }
85
96
  export interface EdgeView extends LineSettings {
@@ -246,11 +257,13 @@ export interface DecoratorTextChangeDetail {
246
257
  }
247
258
  export type LayoutType = "manual" | "force" | "dagre" | undefined;
248
259
  export type LayoutOptions = LayoutOptionsManual | LayoutOptionsDagre | LayoutOptionsForce;
249
- export interface LayoutOptionsManual extends LayoutSnapOptions {
260
+ export interface LayoutOptionsManual extends BaseLayoutOptions {
250
261
  }
251
- export interface LayoutSnapOptions {
262
+ export interface BaseLayoutOptions {
252
263
  /** Snap options. Setting to true means enable all snap options */
253
264
  snap?: boolean | SnapOptions;
265
+ /** 画布内间距,自动居中时将预留此间距。 */
266
+ padding?: PartialRectTuple;
254
267
  }
255
268
  export interface SnapOptions {
256
269
  /** Snap to grid */
@@ -275,14 +288,18 @@ export interface SnapToObjectOptions {
275
288
  positions?: string;
276
289
  }
277
290
  export type SnapToObjectPosition = "center" | "top" | "right" | "bottom" | "left";
278
- export interface LayoutOptionsDagre extends BaseLayoutOptions {
291
+ export interface LayoutOptionsDagre extends BaseAutoLayoutOptions {
292
+ /** @default "TB" */
279
293
  rankdir?: "TB" | "BT" | "LR" | "RL";
294
+ /** @default 50 */
280
295
  ranksep?: number;
296
+ /** @default 10 */
281
297
  edgesep?: number;
298
+ /** @default 50 */
282
299
  nodesep?: number;
283
300
  align?: "UL" | "UR" | "DL" | "DR";
284
301
  }
285
- export interface LayoutOptionsForce extends BaseLayoutOptions {
302
+ export interface LayoutOptionsForce extends BaseAutoLayoutOptions {
286
303
  /** 设置碰撞参数 */
287
304
  collide?: boolean | ForceCollideOptions;
288
305
  }
@@ -308,7 +325,7 @@ export interface ForceCollideOptions {
308
325
  */
309
326
  iterations?: number;
310
327
  }
311
- export interface BaseLayoutOptions extends LayoutSnapOptions {
328
+ export interface BaseAutoLayoutOptions extends BaseLayoutOptions {
312
329
  nodePadding?: PartialRectTuple;
313
330
  /**
314
331
  * 根据节点什么位置进行对齐,支持关键字、百分比和比例值。
@@ -406,3 +423,18 @@ export interface LineSegmentJumps {
406
423
  /** 交叉跨线圆弧的半径 */
407
424
  radius: number;
408
425
  }
426
+ export interface AutoSize {
427
+ width?: "fit-content";
428
+ minWidth?: number;
429
+ maxWidth?: number;
430
+ height?: "fit-content";
431
+ minHeight?: number;
432
+ maxHeight?: number;
433
+ }
434
+ export interface CellsRect {
435
+ left: number;
436
+ top: number;
437
+ width: number;
438
+ height: number;
439
+ empty: boolean;
440
+ }
@@ -1,8 +1,4 @@
1
1
  import type { TransformLiteral } from "../../diagram/interfaces";
2
+ import { type TransformToCenterOptions } from "../../shared/canvas/processors/getTransformToCenter";
2
3
  import type { Cell } from "../interfaces";
3
- export interface TransformToCenterOptions {
4
- canvasWidth: number;
5
- canvasHeight: number;
6
- scaleRange?: [min: number, max: number];
7
- }
8
- export declare function transformToCenter(cells: Cell[], { canvasWidth, canvasHeight, scaleRange }: TransformToCenterOptions): TransformLiteral;
4
+ export declare function transformToCenter(cells: Cell[], options: TransformToCenterOptions): TransformLiteral;
@@ -0,0 +1,2 @@
1
+ import type { Cell, CellsRect } from "../../../draw-canvas/interfaces";
2
+ export declare function getCellsRect(cells: Cell[]): CellsRect;
@@ -0,0 +1,9 @@
1
+ import type { FullRectTuple, TransformLiteral } from "../../../diagram/interfaces";
2
+ import type { CellsRect } from "../../../draw-canvas/interfaces";
3
+ export interface TransformToCenterOptions {
4
+ canvasWidth: number;
5
+ canvasHeight: number;
6
+ canvasPadding?: FullRectTuple | null;
7
+ scaleRange?: [min: number, max: number];
8
+ }
9
+ export declare function getTransformToCenter(rect: CellsRect, { canvasWidth, canvasHeight, canvasPadding, scaleRange, }: TransformToCenterOptions): TransformLiteral;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { type ZoomBehavior } from "d3-zoom";
3
- import type { RangeTuple } from "../../diagram/interfaces";
4
- import type { Cell } from "../../draw-canvas/interfaces";
3
+ import type { PartialRectTuple, RangeTuple } from "../../diagram/interfaces";
4
+ import type { AutoSize, Cell } from "../../draw-canvas/interfaces";
5
5
  export interface UseAutoCenterOptions {
6
6
  rootRef: React.RefObject<SVGSVGElement>;
7
7
  cells: Cell[];
@@ -10,9 +10,11 @@ export interface UseAutoCenterOptions {
10
10
  zoomer: ZoomBehavior<SVGSVGElement, unknown>;
11
11
  scaleRange: RangeTuple;
12
12
  autoCenterWhenCellsChange?: boolean;
13
+ autoSize?: AutoSize;
14
+ padding?: PartialRectTuple;
13
15
  }
14
16
  export type UseAutoCenterResult = [
15
17
  centered: boolean,
16
18
  setCentered: React.Dispatch<React.SetStateAction<boolean>>
17
19
  ];
18
- export declare function useAutoCenter({ rootRef, cells, layoutInitialized, zoomable, zoomer, scaleRange, autoCenterWhenCellsChange, }: UseAutoCenterOptions): UseAutoCenterResult;
20
+ export declare function useAutoCenter({ rootRef, cells, layoutInitialized, zoomable, zoomer, scaleRange, autoCenterWhenCellsChange, autoSize, padding, }: UseAutoCenterOptions): UseAutoCenterResult;
@@ -1,10 +1,11 @@
1
1
  import type { ZoomBehavior } from "d3-zoom";
2
- import type { Cell, LayoutOptions, LayoutType } from "../../draw-canvas/interfaces";
2
+ import type { Cell, LayoutOptions, LayoutType, AutoSize } from "../../draw-canvas/interfaces";
3
3
  import type { RangeTuple } from "../../diagram/interfaces";
4
4
  import type { DrawCanvasAction } from "../../draw-canvas/reducers/interfaces";
5
5
  export interface UseLayoutOptions {
6
6
  layout: LayoutType;
7
7
  layoutOptions?: LayoutOptions;
8
+ autoSize?: AutoSize;
8
9
  rootRef: React.RefObject<SVGSVGElement>;
9
10
  cells: Cell[];
10
11
  zoomable?: boolean;
@@ -15,7 +16,7 @@ export interface UseLayoutOptions {
15
16
  autoCenterWhenCellsChange?: boolean;
16
17
  dispatch: (value: DrawCanvasAction) => void;
17
18
  }
18
- export declare function useLayout({ layout, layoutOptions, rootRef, cells, zoomable, zoomer, scaleRange, layoutKey, allowEdgeToArea, autoCenterWhenCellsChange, dispatch, }: UseLayoutOptions): {
19
+ export declare function useLayout({ layout, layoutOptions, autoSize, rootRef, cells, zoomable, zoomer, scaleRange, layoutKey, allowEdgeToArea, autoCenterWhenCellsChange, dispatch, }: UseLayoutOptions): {
19
20
  centered: boolean;
20
21
  setCentered: React.Dispatch<React.SetStateAction<boolean>>;
21
22
  getNextLayoutKey: () => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-bricks/diagram",
3
- "version": "0.62.2",
3
+ "version": "0.63.1",
4
4
  "homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/bricks/diagram",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,5 +41,5 @@
41
41
  "peerDependencies": {
42
42
  "@next-bricks/basic": "*"
43
43
  },
44
- "gitHead": "fd06c42ff20a223af2620bbaaf49019d8562041d"
44
+ "gitHead": "cd6de4b1813b9c89a176f285b73b536b711ff4a4"
45
45
  }
@@ -1,3 +0,0 @@
1
- /*! For license information please see 3233.941a4709.js.LICENSE.txt */
2
- "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[3233],{821:(e,t,n)=>{n.d(t,{A:()=>r});var o=n(6758),a=n.n(o),i=n(935),l=n.n(i)()(a());l.push([e.id,":host{display:block;width:100%;height:100%;overflow:hidden}:host([hidden]){display:none}*{box-sizing:border-box}.diagram{width:100%;height:100%;position:relative;opacity:0}.diagram:focus{outline:none}.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.line-labels{opacity:0}.ready{opacity:1}.diagram.ready.pannable{cursor:grab}.diagram.pannable.grabbing{cursor:grabbing}.nodes,\n.lines{transform-origin:0 0}.node,\n.line-label{position:absolute;visibility:hidden}.line-label{transform:translate(-50%,-50%);white-space:pre-line;width:max-content;text-align:center;line-height:1}.lines{pointer-events:none}.line.interactable{pointer-events:auto;cursor:default}.connect-line{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none}.connect-line:not(.connecting){display:none}.line:not(.active) .active-bg{display:none}",""]);const r=l.toString()},1324:(e,t,n)=>{function o(e,t){for(const{id:n,position:o,placement:a,angle:i,size:l}of e){const e=t.get(n);if(e&&(e.style.left=`${o[0]}px`,e.style.top=`${o[1]}px`,e.style.visibility="visible","center"!==a&&void 0!==i)){const[t,n]=null!=l?l:[0,0],o=Math.floor((i<0?2*Math.PI+i:i)/Math.PI*4),r="start"===a?o:(o+4)%8,s=Math.tan(i),d=i+("start"===a?1:-1)*Math.PI/2,c=2,u=Math.sin(d)*c,f=Math.cos(d)*c;let p;switch(r){case 0:p=`translate(0,${t*s+u}px)`;break;case 1:p=`translate(${n/s-f}px,0)`;break;case 2:p=`translate(calc(${n/s+f}px - 100%),0)`;break;case 3:p=`translate(-100%,${-t*s-u}px)`;break;case 4:p=`translate(-100%,calc(${-t*s+u}px - 100%))`;break;case 5:p=`translate(calc(${-n/s-f}px - 100%),-100%)`;break;case 6:p=`translate(${-n/s+f}px,-100%)`;break;default:p=`translate(0,calc(${t*s-u}px - 100%))`}e.style.transform=p}}}n.d(t,{F:()=>o})},1518:(e,t,n)=>{n.d(t,{R:()=>r});var o=n(8653),a=n(3188),i=n(4059),l=n(733);function r(e,t,n){const r=new WeakMap,c=new Map,u=new Map;for(const e of t)c.set(e.id,e);for(const t of e){const{data:e}=t;r.set(e,t)}let f=!1;return n.map((t=>{var n,p,m,h;let{line:v,edge:g,markers:y,...k}=t;const b=r.get(g);if(!b)return;const w=null!==(n=null===(p=y.find((e=>"default"===e.variant&&"start"===e.placement)))||void 0===p?void 0:p.offset)&&void 0!==n?n:0,x=null!==(m=null===(h=y.find((e=>"default"===e.variant&&"end"===e.placement)))||void 0===h?void 0:h.offset)&&void 0!==m?m:0;let M,{points:R}=b;if(!R){const t=c.get(g.source),n=c.get(g.target);if(t&&n&&t!==n){if("polyline"===v.type){if(!(0,l.w)(t,n,w,x)){var E,L;(()=>{if(f)return;f=!0;const t=(e,t)=>{let n=u.get(e);n||u.set(e,n=new Set);const o=c.get(t);o&&n.add(o)};for(const{data:{source:n,target:o}}of e)n!==o&&(t(n,o),t(o,n))})();const o=s(t,n,w),a=s(n,t,x),l=d(null!==(E=u.get(g.source))&&void 0!==E?E:[],t,o,w),r=d(null!==(L=u.get(g.target))&&void 0!==L?L:[],n,a,x),p=(l.indexOf(n)+1)/(l.length+1),m=(r.indexOf(t)+1)/(r.length+1);R=(0,i.o)(t,n,o,a,p,m)}}else R=(0,a.h)(t,n);if(R){const e=R[0],t=R[R.length-1];M=Math.atan2(t.y-e.y,t.x-e.x)}}}return{...k,markers:y,line:v,edge:g,d:(0,o.S)(R,v.curveType,w,x),angle:M,labelSize:b.labelSize}})).filter(Boolean)}function s(e,t,n){const o=Math.atan2(e.height+2*n,e.width+2*n),{x:a,y:i}=e,{x:l,y:r}=t,s=Math.atan2(r-i,l-a),d=s<0?2*Math.PI+s:s;switch(Math.floor(d/Math.PI*2)){case 0:return d<o?"right":"bottom";case 1:return d<Math.PI-o?"bottom":"left";case 2:return d<Math.PI+o?"left":"top";default:return d<2*Math.PI-o?"top":"right"}}function d(e,t,n,o){return[...e].filter((e=>s(t,e,o)===n)).sort(((e,t)=>{const{x:o,y:a}=e,{x:i,y:l}=t;return"top"===n||"bottom"===n?o-i:a-l}))}},1803:(e,t,n)=>{n.d(t,{m:()=>r});var o=n(8769),a=n.n(o),i=n(3373),l=n.n(i);function r(e){var t,n;let{line:{line:o,edge:i,d:r,markers:s},linePaths:d,lineMaskRects:c,maskPrefix:u,markerPrefix:f,activeLineMarkerPrefix:p,active:m,activeRelated:h,onLineClick:v,onLineDoubleClick:g}=e;const y=c.has(o.$id)?`url(#${u}${o.$id})`:void 0,{strokeColor:k,strokeWidth:b,interactStrokeWidth:w}={...o,...m?null===(t=o.overrides)||void 0===t?void 0:t.active:h?null===(n=o.overrides)||void 0===n?void 0:n.activeRelated:null},x=m?"active":h?"active-related":"default";let M,R;for(const e of s)e.variant===x&&("start"===e.placement?M=`url(#${f}${e.index})`:R=`url(#${f}${e.index})`);return a().createElement("g",{className:l()("line",{interactable:o.interactable,active:m,"active-related":h}),onClick:o.interactable?()=>{null==v||v({id:o.$id,edge:i})}:void 0,onDoubleClick:o.interactable?e=>{e.preventDefault(),e.stopPropagation(),null==g||g({id:o.$id,edge:i})}:void 0,style:{cursor:o.cursor}},o.interactable&&a().createElement("path",{d:r,fill:"none",stroke:"transparent",strokeWidth:w}),a().createElement("path",{ref:e=>d.set(o.$id,e),stroke:k,strokeWidth:b,d:r,fill:"none",markerStart:M,markerEnd:R,mask:y}),a().createElement("path",{stroke:"var(--palette-blue-3)",strokeWidth:b,d:r,fill:"none",className:"active-bg",markerStart:`url(#${p}start)`,markerEnd:`url(#${p}end)`,mask:y}))}},2448:(e,t,n)=>{n.d(t,{P:()=>i});var o=n(8974),a=n(8657);function i(e,t){let{nodes:n,nodesRefRepository:i,connectNodes:l,dragNodes:r,scale:s,setConnectLineState:d,setConnectLineTo:c,setManualLayoutStatus:u,setNodeMovement:f,onSwitchActiveTarget:p,onNodesConnect:m}=t;function h(e){if(i)for(const[t,o]of i)if(e(o))return null==n?void 0:n.find((e=>e.id===t))}if(!l&&!r)return;const v=h((t=>t.contains(e.target)));if(!v)return;if(!function(e,t){return e.sourceType?[].concat(e.sourceType).includes(t.type):(0,o.checkIfByTransform)(e,{source:t})}(l||r,v))return;e.stopPropagation();const g=[e.clientX,e.clientY];if(l){d({from:g,options:{strokeColor:a.mF,strokeWidth:a.VO,...o.__secret_internals.legacyDoTransform({source:v},l)}}),c(g),null==p||p({type:"node",nodeId:v.id});const e=e=>{c([e.clientX,e.clientY])},t=n=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",t),d(null);const o=n.composedPath(),a=h((e=>o.includes(e)));a&&v!==a&&(null==m||m({source:v,target:a}))};return document.addEventListener("mousemove",e),void document.addEventListener("mouseup",t)}null==p||p({type:"node",nodeId:v.id});let y=!1;const k=e=>{const t=[(e.clientX-g[0])/s,(e.clientY-g[1])/s];y||(y=t[0]**2+t[1]**2>=9,y&&u("started")),y&&f({id:v.id,move:t})},b=()=>{y=!1,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",b),f(null),u("finished")};document.addEventListener("mousemove",k),document.addEventListener("mouseup",b)}},2547:(e,t,n)=>{n.d(t,{d2:()=>r});var o=n(8769),a=n.n(o),i=n(8361),l=n(8974);function r(e){let{labels:t,onRendered:n}=e;const[i,l]=(0,o.useState)(!1),[r,c]=(0,o.useState)([]),u=(0,o.useMemo)((()=>new Map),[]),f=(0,o.useCallback)(((e,t)=>{t&&u.set(e,t),c((t=>t.includes(e)?t:t.concat(e)))}),[u]),p=(0,o.useCallback)((e=>{c((t=>{const n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,o.useEffect)((()=>{l(!(null!=t&&t.some((e=>!r.includes(e.id)))))}),[t,r]),(0,o.useEffect)((()=>{null==n||n(i?u:null)}),[u,i]),a().createElement(a().Fragment,null,null==t?void 0:t.map((e=>{let{text:t,label:n,id:o,edge:i}=e;return n?a().createElement("div",{key:o,className:"line-label"},a().createElement(d,{id:o,edge:i,label:n,onRendered:f,onUnmount:p})):a().createElement(s,{key:o,id:o,text:t,onRendered:f})})))}function s(e){let{id:t,text:n,onRendered:i}=e;const l=(0,o.useCallback)((e=>{null==i||i(t,e)}),[t,i]);return a().createElement("div",{className:"line-label",ref:l,style:n.style},n.content)}function d(e){let{id:t,edge:n,label:r,onRendered:s,onUnmount:d}=e;const c=(0,o.useMemo)((()=>(0,l.checkIfByTransform)(r,{edge:n})?r.useBrick:null),[n,r]),u=(0,o.useMemo)((()=>({edge:n})),[n]);(0,o.useEffect)((()=>{c||setTimeout((()=>{null==s||s(t,null)}))}),[t,s,c]),(0,o.useEffect)((()=>()=>{null==d||d(t)}),[]);const f=(0,o.useCallback)((e=>{e&&setTimeout((()=>{null==s||s(t,e.parentElement)}))}),[t,s]),p=(0,o.useCallback)((()=>{setTimeout((()=>{null==s||s(t,null)}))}),[t,s]);return c?a().createElement(i.ReactUseBrick,{refCallback:f,ignoredCallback:p,useBrick:c,data:u}):null}},2673:(e,t,n)=>{function o(e,t){return e?!!t&&e.type===t.type&&("node"===e.type?e.nodeId===t.nodeId:e.edge.source===t.edge.source&&e.edge.target===t.edge.target):!t}n.d(t,{c:()=>o})},5157:(e,t,n)=>{n.d(t,{a:()=>a});var o=n(1030);function a(e,t){let{renderedNodes:n,activeTarget:o}=t;const a="node"===(null==o?void 0:o.type)?n.find((e=>e.id===o.nodeId)):void 0,l="edge"===(null==o?void 0:o.type)?o.edge:void 0;if(!a&&!l)return;const r=e.key||e.keyCode||e.which;let s,d,c;switch(r){case"Backspace":case 8:case"Delete":case 46:a?(s="delete-node",d=a):(s="delete-edge",c=l);break;default:if(!a)return;switch(r){case"ArrowLeft":case 37:d=i("x",n,a,-1),s="switch-active-node";break;case"ArrowUp":case 38:d=i("y",n,a,-1),s="switch-active-node";break;case"ArrowRight":case 39:d=i("x",n,a,1),s="switch-active-node";break;case"ArrowDown":case 40:d=i("y",n,a,1),s="switch-active-node"}}var u;return s?(e.preventDefault(),e.stopPropagation(),{action:s,node:null===(u=d)||void 0===u?void 0:u.data,edge:c}):void 0}function i(e,t,n,a){const i="x"===e?"y":"x";let l;const r=t.filter((t=>t!==n&&(l=(t[e]-n[e])*a,l>0)&&l>Math.abs(n[i]-t[i])));return(0,o.minBy)(r,(t=>(n[i]-t[i])**2+(n[e]-t[e])**2))}},5987:(e,t,n)=>{function o(e,t){const n=new Map;for(const{id:o,lineId:a,placement:i}of e){if(!t||"center"!==i)continue;const e=t.get(o);if(!e)continue;const{offsetWidth:l,offsetHeight:r}=e;if(0===l||0===r)continue;const s=3;n.set(a,[{left:e.offsetLeft-l/2-s,top:e.offsetTop-r/2-s,width:l+2*s,height:r+2*s}])}return n}n.d(t,{G:()=>o})},6671:(e,t,n)=>{n.d(t,{w:()=>s});var o=n(8769),a=n.n(o),i=n(3373),l=n.n(i),r=n(3739);function s(e){let{connectLineState:t,connectLineTo:n,markerPrefix:o}=e;return a().createElement("svg",{width:"100%",height:"100%",className:l()("connect-line",{connecting:!!t&&(n[0]-t.from[0])**2+(n[1]-t.from[1])**2>25})},a().createElement("defs",null,a().createElement(r.c,{type:"arrow",id:`${o}connect-line`,strokeColor:null==t?void 0:t.options.strokeColor})),a().createElement("path",{d:t?`M${t.from.join(" ")}L${n.join(" ")}`:"",fill:"none",stroke:null==t?void 0:t.options.strokeColor,strokeWidth:null==t?void 0:t.options.strokeWidth,markerEnd:null!=t&&t.options.arrow?`url(#${o}connect-line)`:void 0}))}},6753:(e,t,n)=>{n.d(t,{_:()=>u});var o=n(8769),a=n(8974),i=n(6330),l=n(1361),r=function(){var e=(0,i.A)((function*(e,t,n){return(yield l.http.post("api/gateway/cmdb.instance.PostSearchV3/v3/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,o){return e.apply(this,arguments)}}(),s=function(){var e=(0,i.A)((function*(e,t,n,o){return(yield l.http.put("api/gateway/cmdb.instance.UpdateInstanceV2/v2/object/".concat(e,"/instance/").concat(t),n,o)).data}));return function(t,n,o,a){return e.apply(this,arguments)}}(),d=function(){var e=(0,i.A)((function*(e,t,n){return(yield l.http.post("api/gateway/cmdb.instance.CreateInstance/v2/object/".concat(e,"/instance"),t,n)).data}));return function(t,n,o){return e.apply(this,arguments)}}();const c="GRAPH_USER_VIEW@EASYOPS";function u(e){const[t,n]=(0,o.useState)(!e),i=(0,o.useRef)(),[l,u]=(0,o.useState)(null),f=(0,o.useMemo)((()=>function(){let e=!1;const t=[];return async function(n){if(t.push(n),!e){let n;for(e=!0;n=t.shift();)try{await n()}catch(e){console.error(e)}e=!1}}}()),[]);return(0,o.useEffect)((()=>{!async function(){if(!e)return void n(!0);const{namespace:t,key:o}=e;if(!t||!o)return console.error("Namespace and key are required to save graph user view"),void n(!0);try{const e=(await r(c,{fields:["nodes"],query:{namespace:{$eq:t},key:{$eq:o}},page:1,page_size:30})).list;if(e.length>0){var l;const t=e[0],n=new Map(null===(l=t.nodes)||void 0===l?void 0:l.map((e=>[e.id,e])));i.current=t.instanceId,u(n)}else u(null)}catch(e){(0,a.handleHttpError)(e)}finally{n(!0)}}()}),[e]),{userViewReady:t,userViewNodesMap:l,saveUserView:(0,o.useCallback)((t=>{const{namespace:n,key:o}=null!=e?e:{};n&&o&&f((async()=>{const e={namespace:n,key:o,nodes:t};try{if(i.current)await s(c,i.current,e,{interceptorParams:{ignoreLoadingBar:!0}});else{const t=await d(c,e,{interceptorParams:{ignoreLoadingBar:!0}});i.current=t.instanceId}}catch(e){(0,a.handleHttpError)(e)}}))}),[e,f])}}},8060:(e,t,n)=>{function o(e,t,n){return 0===e.length&&0===t.length?e:t.flatMap((e=>{let{line:{text:t,label:o,$id:a},edge:i,labelSize:l,angle:r}=e;const s=n.get(a);if(!t&&!o||!s||!s.getAttribute("d"))return[];let d,c;o?(d="label",c=[].concat(o)):(d="text",c=[].concat(t));const{x:u,y:f,width:p,height:m}=s.getBBox(),h=s.getTotalLength();return c.map((e=>{var t;const n=null!==(t=e.placement)&&void 0!==t?t:"center",o=s.getPointAtLength("start"===n?Math.min(0,h/2):"end"===n?Math.max(h-0,h/2):h/2);return{[d]:e,edge:i,position:[o.x,o.y],lineRect:{left:u,top:f,width:p,height:m},id:`${a}-${n}`,lineId:a,placement:n,angle:r,size:null==l?void 0:l[n]}}))}))}n.d(t,{z:()=>o})},8069:(e,t,n)=>{n.d(t,{o:()=>k});var o=n(8769),a=n(7586),i=n.n(a),l=n(1030);function r(e,t,n){for(const i of e){var o,a;const e=t.get(i.id);i.width=Math.max(null!==(o=null==e?void 0:e.offsetWidth)&&void 0!==o?o:0,10)+n[1]+n[3],i.height=Math.max(null!==(a=null==e?void 0:e.offsetHeight)&&void 0!==a?a:0,10)+n[0]+n[2]}}function s(e,t,n){for(const a of e){var o;const e=a.x-a.width/2+n[3],i=a.y-a.height/2+n[0],l=null===(o=t.get(a.id))||void 0===o?void 0:o.parentElement;l&&(l.style.left=`${e}px`,l.style.top=`${i}px`,l.style.visibility="visible")}}var d=n(8802),c=n(6149),u=n(4842),f=n(1945),p=n(9418),m=n(3854),h=n(7931);function v(e,t){var n;let{normalizedLinesMap:o,lineLabelsRefRepository:a}=t;return null!==(n=null==e?void 0:e.map((e=>{const t=o.get(e),n={};if(t)for(const e of["start","end"]){const o=a.get(`${t}-${e}`);o&&(n[e]=[o.offsetWidth,o.offsetHeight])}return{data:e,labelSize:n}})))&&void 0!==n?n:[]}function g(e,t){return new Array(t).fill(null).map(((t,n)=>({dummy:!0,id:`$dummy-${e.source}-${e.target}-${n}`})))}function y(e,t){return new Array(t+1).fill(null).map(((n,o)=>({dummy:!0,source:0===o?e.source:`$dummy-${e.source}-${e.target}-${o-1}`,target:o===t?e.target:`$dummy-${e.source}-${e.target}-${o}`})))}function k(e){let{layout:t,nodes:n,edges:a,manualLayoutStatus:k,userViewReady:b,userViewNodesMap:w,nodeMovement:x,nodesRefRepository:M,lineLabelsRefRepository:R,normalizedLinesMap:E,nodesRenderId:L,lineLabelsRenderId:$,layoutOptions:C}=e;const P="initial"===k?t:"manual",[S,I]=(0,o.useState)(null),[T,N]=(0,o.useState)({nodes:[],edges:[]});return(0,o.useEffect)((()=>{b&&I((e=>"dagre"===P?function(e,t,n,o){const{nodePadding:a,...c}={nodePadding:0,rankdir:"TB",ranksep:50,edgesep:10,nodesep:50,...(0,l.pick)(o,["nodePadding","rankdir","ranksep","edgesep","nodesep","align"])},u=(0,d.D)(a),f=new(i().graphlib.Graph);f.setGraph(c),f.setDefaultEdgeLabel((function(){return{}}));for(const n of null!=t?t:[]){const t=null==e?void 0:e.getNode(n.id);f.setNode(n.id,(null==t?void 0:t.data)===n?t:{id:n.id,data:n})}for(const e of null!=n?n:[])f.setEdge(e.source,e.target,{data:e});return{layout:"dagre",getNode:e=>f.node(e),applyLayout(e){let{nodesRefRepository:t,lineLabelsRefRepository:n,normalizedLinesMap:o}=e;const a=[];for(const e of f.nodes()){const t=f.node(e);t?a.push(t):console.error("Diagram node not found: %s",e)}if(0===a.length)return null;r(a,t,u);const l=f.edges().map((e=>f.edge(e)));for(const e of l){const t=o.get(e.data);if(t)for(const o of["center","start","end"]){const a=n.get(`${t}-${o}`);if(a){var d;const{offsetWidth:t,offsetHeight:n}=a;"center"===o&&(e.labelpos="c",e.width=t,e.height=n),null!==(d=e.labelSize)&&void 0!==d||(e.labelSize={}),e.labelSize[o]=[t,n]}}}return i().layout(f),s(a,t,u),{nodes:a,edges:l}}}}(e,n,a,C):"force"===P?function(e,t,n,o,a){const{nodePadding:i,dummyNodesOnEdges:k,collide:b}={nodePadding:0,dummyNodesOnEdges:0,...(0,l.pick)(a,["nodePadding","dummyNodesOnEdges"]),collide:!1!==(null==a?void 0:a.collide)&&{dummyRadius:1,radiusDiff:5,strength:1,iterations:1,...!0===(null==a?void 0:a.collide)?null:null==a?void 0:a.collide}},w=(0,d.D)(i),x=[];for(const n of null!=t?t:[]){const t=null==e?void 0:e.getNode(n.id);if((null==t?void 0:t.data)===n)x.push(t);else{const e={id:n.id,data:n},t=null==o?void 0:o.get(n.id);t&&(e.fx=t.x,e.fy=t.y),x.push(e)}}return{layout:"force",getNode:function(e){return x.find((t=>t.data.id===e))},applyLayout(e){let{nodesRefRepository:t,lineLabelsRefRepository:o,normalizedLinesMap:a}=e;if(0===x.length)return null;r(x,t,w);const i=x.slice(),l=[];for(const e of null!=n?n:[])l.push({...e}),k>0&&(i.push(...g(e,k)),l.push(...y(e,k)));const d=(0,c.A)(l).id((e=>e.id));k>0&&d.distance((e=>e.dummy?30/(k+1):30)).strength((e=>e.dummy?.5:1));const M=(0,u.A)(i).force("link",d).force("x",(0,f.A)()).force("y",(0,p.A)()).force("charge",(0,m.A)());b&&M.force("collide",(0,h.A)().radius((e=>e.dummy?b.dummyRadius:Math.sqrt(e.width**2+e.height**2)/2+b.radiusDiff)).strength(b.strength).iterations(b.iterations)),M.stop(),function(e){e.tick(Math.ceil(Math.log(e.alphaMin())/Math.log(1-e.alphaDecay())))}(M),s(x,t,w);const R=v(n,{normalizedLinesMap:a,lineLabelsRefRepository:o});return{nodes:x,edges:R}}}}(e,n,a,w,C):"manual"===P?function(e,t,n,o){const{nodePadding:a}={nodePadding:0,...(0,l.pick)(o,["nodePadding"])},i=(0,d.D)(a),c=[];for(const n of null!=t?t:[]){const t=null==e?void 0:e.getNode(n.id);(null==t?void 0:t.data)===n?(c.push(t),t.x0=t.x,t.y0=t.y):c.push({id:n.id,data:n})}let u;return{layout:"manual",getNode:function(e){return c.find((t=>t.data.id===e))},applyLayout(e){let{manualLayoutStatus:t,nodesRefRepository:o,lineLabelsRefRepository:a,normalizedLinesMap:l,nodeMovement:d}=e;if(0===c.length)return null;var f,p;r(c,o,i),d&&(u=c.find((e=>e.id===d.id)),u&&(u.x=(null!==(f=u.x0)&&void 0!==f?f:0)+d.move[0],u.y=(null!==(p=u.y0)&&void 0!==p?p:0)+d.move[1])),"finished"===t&&u&&(u.x0=u.x,u.y0=u.y),s(c,o,i);const m=v(n,{normalizedLinesMap:l,lineLabelsRefRepository:a});return{nodes:c,edges:m}}}}(e,n,a,C):null))}),[a,n,P,C,b,w]),(0,o.useEffect)((()=>{if(!M||!R||P!==(null==S?void 0:S.layout))return;const e=null==S?void 0:S.applyLayout({manualLayoutStatus:k,nodesRefRepository:M,lineLabelsRefRepository:R,normalizedLinesMap:E,nodeMovement:x});e&&N(e)}),[P,k,S,x,M,R,L,$,E]),T}},8308:(e,t,n)=>{function o(e,t){let{canvasWidth:n,canvasHeight:o,scaleRange:a}=t,i=1/0,l=1/0,r=-1/0,s=-1/0;for(const t of e){const e=t.width/2,n=t.height/2,o=t.x-e,a=t.x+e,d=t.y-n,c=t.y+n;o<i&&(i=o),a>r&&(r=a),d<l&&(l=d),c>s&&(s=c)}const d=r-i,c=s-l,u=a&&(d>n||c>o)?Math.max(Math.min(n/d,o/c,a[1]),a[0]):1;return{x:(n-d*u)/2-i*u,y:(o-c*u)/2-l*u,k:u}}n.d(t,{r:()=>o})},8657:(e,t,n)=>{n.d(t,{Ie:()=>l,KP:()=>i,VO:()=>a,Yt:()=>s,mF:()=>o,sS:()=>r});const o="var(--palette-gray-5)",a=1,i="curveBasis",l=20,r=.5,s=2},8892:(e,t,n)=>{n.d(t,{p:()=>r});var o=n(8769),a=n.n(o),i=n(8361),l=n(8974);function r(e){let{nodes:t,nodeBricks:n,onRendered:i}=e;const[l,r]=(0,o.useState)(!1),[d,c]=(0,o.useState)([]),u=(0,o.useMemo)((()=>new Map),[]),f=(0,o.useCallback)(((e,t)=>{t&&u.set(e,t),c((t=>t.includes(e)?t:t.concat(e)))}),[u]),p=(0,o.useCallback)((e=>{c((t=>{const n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,o.useEffect)((()=>{r(!(null!=t&&t.some((e=>!d.includes(e.id)))))}),[t,d]),(0,o.useEffect)((()=>{null==i||i(l?u:null)}),[u,l]),a().createElement(a().Fragment,null,null==t?void 0:t.map((e=>a().createElement("div",{key:e.id,className:"node"},a().createElement(s,{nodeBricks:n,node:e,onRendered:f,onUnmount:p})))))}function s(e){let{node:t,nodeBricks:n,onRendered:r,onUnmount:s}=e;const d=(0,o.useMemo)((()=>{var e;return null===(e=function(e,t){return null==t?void 0:t.find((t=>t.nodeType?[].concat(t.nodeType).includes(e.type):(0,l.checkIfByTransform)(t,{node:e})))}(t,n))||void 0===e?void 0:e.useBrick}),[t,n]),c=(0,o.useMemo)((()=>({node:t})),[t]);(0,o.useEffect)((()=>{d||setTimeout((()=>{null==r||r(t.id,null)}))}),[t.id,r,d]),(0,o.useEffect)((()=>()=>{null==s||s(t.id)}),[]);const u=(0,o.useCallback)((e=>{e&&setTimeout((()=>{null==r||r(t.id,e)}))}),[t.id,r]),f=(0,o.useCallback)((()=>{setTimeout((()=>{null==r||r(t.id,null)}))}),[t.id,r]);return d?a().createElement(i.ReactUseBrick,{refCallback:u,ignoredCallback:f,useBrick:d,data:c}):null}},9137:(e,t,n)=>{n.d(t,{t:()=>r});var o=n(1030),a=n(8974);function i(e,t){return!!t&&(t.edgeType?[].concat(t.edgeType).includes(e.type):(0,a.checkIfByTransform)(t,{edge:e}))}var l=n(8657);function r(e,t){const n=[],r=new WeakMap,d=[];for(const v of null!=e?e:[]){var c,u;const{label:e,...g}=null!==(c=null==t?void 0:t.find((e=>i(v,e))))&&void 0!==c?c:{},y=a.__secret_internals.legacyDoTransform({edge:v},g);if(!1===(null==y?void 0:y.draw))continue;const k=(0,o.uniqueId)("line-"),b={strokeColor:l.mF,strokeWidth:l.VO,curveType:"polyline"===(null==y?void 0:y.type)?"curveLinear":l.KP,interactStrokeWidth:l.Ie,type:"auto",...y,label:e,$id:k};r.set(v,k);const w=[],x=null!==(u=b.markers)&&void 0!==u?u:b.arrow?[{placement:"end",type:"arrow"}]:[];for(const e of x){var f,p,m,h;const{placement:t,type:n}=e,o=null!=t?t:"end";let a,i;switch(n){case"0..1":case"0..N":i=21,a=n;break;default:i=1,a="arrow"}const l=i*b.strokeWidth,r=s({type:a,strokeColor:b.strokeColor},d);w.push({index:r,placement:o,type:a,variant:"default",offset:l});const c=s({type:a,strokeColor:null!==(f=null===(p=b.overrides)||void 0===p||null===(p=p.active)||void 0===p?void 0:p.strokeColor)&&void 0!==f?f:b.strokeColor},d);w.push({index:c,placement:o,type:a,variant:"active",offset:l});const u=s({type:a,strokeColor:null!==(m=null===(h=b.overrides)||void 0===h||null===(h=h.activeRelated)||void 0===h?void 0:h.strokeColor)&&void 0!==m?m:b.strokeColor},d);w.push({index:u,placement:o,type:a,variant:"active-related",offset:l})}n.push({line:b,markers:w,edge:v})}return{normalizedLines:n,normalizedLinesMap:r,markers:d}}function s(e,t){let n=(0,o.findIndex)(t,e);return-1===n&&(n=t.push(e)-1),n}},9191:(e,t,n)=>{n.d(t,{y:()=>i});var o=n(8769),a=n.n(o);function i(e){let{lineId:t,rects:n,maskPrefix:o,renderedLineLabels:i}=e;const l=i.find((e=>e.lineId===t&&"center"===e.placement));if(!l)return null;const{lineRect:r}=l,s=(c=1e3,{left:(d=r).left-c,top:d.top-c,width:d.width+2e3,height:d.height+2e3});var d,c;return a().createElement("mask",{id:`${o}${t}`,x:s.left,y:s.top,width:s.width,height:s.height},a().createElement("rect",{x:s.left,y:s.top,width:s.width,height:s.height,fill:"white"}),n.map(((e,t)=>a().createElement("rect",{key:t,x:e.left,y:e.top,width:e.width,height:e.height,fill:"black"}))))}}}]);
3
- //# sourceMappingURL=3233.941a4709.js.map
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[4837,7218],{4837:(e,r,t)=>{t.r(r),t.d(r,{ReactUseBrick:()=>s,ReactUseMultipleBricks:()=>u,asyncWrapBrick:()=>k,useCurrentApp:()=>l,useCurrentTheme:()=>o,useLazyWrapBrick:()=>w,useNavConfig:()=>h,useProvider:()=>m,useRecentApps:()=>i,useRouteRender:()=>d});var n=t(8769),c=t(8974);let s=function(e){let{useBrick:r,data:t,errorBoundary:s,refCallback:u,ignoredCallback:a}=e;const[o,i]=(0,n.useState)(null),l=(0,n.useRef)(),[d,f]=(0,n.useState)(),p=(0,n.useRef)(0),g=(0,n.useMemo)((()=>{var e;return null===(e=c.__secret_internals.getRenderId)||void 0===e?void 0:e.call(c.__secret_internals)}),[]);(0,n.useEffect)((()=>{let e=!1;return async function(){try{const n=await c.__secret_internals.renderUseBrick(r,t,s);if(e)return;i(n),f(++p.current)}catch(n){!e&&function(e){var r;const t=null===(r=c.__secret_internals.getRenderId)||void 0===r?void 0:r.call(c.__secret_internals);return!e||!t||e===t}(g)&&(console.error("Render useBrick failed:",r,"with data:",t),(0,c.handleHttpError)(n))}}(),()=>{e=!0}}),[t,r,g,s]);const y=(0,n.useCallback)((e=>{e?l.current=c.__secret_internals.mountUseBrick(o,e):(c.__secret_internals.unmountUseBrick(o,l.current),l.current=void 0),null==u||u(e)}),[u,o]);if(!o)return null;const{tagName:m}=o;if(null===m)return null==a||a(),null;const v=m;return n.createElement(v,{key:d,ref:y})},u=function(e){let{useBrick:r,data:t,errorBoundary:c}=e;return Array.isArray(r)?n.createElement(n.Fragment,null,r.map(((e,r)=>n.createElement(s,{key:r,useBrick:e,data:t,errorBoundary:c})))):n.createElement(s,{useBrick:r,data:t,errorBoundary:c})};const a=(0,c.getV2RuntimeFromDll)();if(a){const{SingleBrickAsComponentFactory:e,BrickAsComponentFactory:r}=a;e&&r&&(s=e(n),u=r(n))}function o(){const[e,r]=(0,n.useState)(c.getCurrentTheme);return(0,n.useEffect)((()=>{const e=e=>{r(e.detail)};return window.addEventListener("theme.change",e),()=>{window.removeEventListener("theme.change",e)}}),[]),e}function i(){const[e,r]=n.useState((()=>(0,c.getRuntime)().getRecentApps()));return n.useEffect((()=>{const e=e=>{r(e.detail)};return window.addEventListener("app.change",e),()=>window.removeEventListener("app.change",e)}),[]),e}function l(){return i().currentApp}function d(){const[e,r]=n.useState(null);return n.useEffect((()=>{const e=e=>{r(e.detail)};return window.addEventListener("route.render",e),()=>window.removeEventListener("route.render",e)}),[]),e}const f={provider:"",customOptions:{onError:()=>{},transform:(e,r)=>r,data:void 0,loading:!1,suspense:!1,cache:!0},dependencies:void 0},p=Object.entries(f).reduce(((e,r)=>{let[t,n]=r;return"[object Object]"===Object.prototype.toString.call(n)?{...e,...n}:{...e,[t]:n}}),{});var g=t(1030);const y=new Map;function m(){const{provider:e,customOptions:r,dependencies:t,requestInit:s}=function(e,r,t){const c=(0,n.useMemo)((()=>"string"==typeof e?e:f.provider),[e,r]),s=(0,n.useMemo)((()=>{let t={};return(0,g.isObject)(e)?t=e:(0,g.isObject)(r)&&(t=r),{...p,...t}}),[e,r]),u=(0,n.useMemo)((()=>{const e=[...Object.keys(f),...Object.keys(f.customOptions)],{args:r=null,...t}=Object.keys(s).reduce(((r,t)=>(e.includes(t)||(r[t]=s[t]),r)),{});return{options:{...t},args:r}}),[s]),a=(0,n.useMemo)((()=>Array.isArray(r)?r:Array.isArray(t)?t:p.dependencies),[r,t]),o=s.loading||Array.isArray(a);return{provider:c,customOptions:(0,n.useMemo)((()=>({...Object.keys(f.customOptions).reduce(((e,r)=>(e[r]=s[r],e)),{}),loading:o})),[s]),requestInit:u,dependencies:a}}(...arguments),{onError:u,transform:a,suspense:o,cache:i,...l}=r,[d,m]=(0,n.useState)(l.loading),v=(0,n.useRef)("pending"),k=(0,n.useRef)(),h=(0,n.useRef)(!1),w=(0,n.useRef)(),_=(0,n.useRef)(),b=(0,n.useRef)(l.data),B=(0,n.useReducer)((()=>({})),[])[1],E=(0,n.useCallback)((async(e,r)=>{try{w.current=void 0,o||m(!0);const t=await async function(e,r,t){let n;const s=function(e){const r=e=>Object.keys(e).sort().map((r=>({[r]:e[r]})));for(var t=arguments.length,n=new Array(t>1?t-1:0),c=1;c<t;c++)n[c-1]=arguments[c];try{const t="object"!=typeof(s=n)||null===s||Array.isArray(s)?n.map((e=>function(e){return"string"==typeof e}(e)?e:r(e))):r(n);return JSON.stringify({provider:e,args:t})}catch(r){return JSON.stringify({provider:e,args:n})}var s}(e,...t);return!r&&y.has(s)&&y.delete(s),y.has(s)?n=y.get(s):(n=(0,c.fetchByProvider)(e,t,{cache:r?"default":"reload"}),r&&y.set(s,n)),n}(e,i,r);_.current=t,b.current=a(b.current,t)}catch(e){w.current=e,b.current=void 0}return o||m(!1),w.current&&u(w.current),b.current}),[e,r,t,s,o,a,l.data,u,i]),O=(0,n.useCallback)((async(r,t)=>{let n=e,c=[];return(0,g.isString)(r)&&(n=r),(0,g.isObject)(r)?c=r:(0,g.isObject)(t)&&(c=t),o?(async()=>(k.current=E(n,c).then((e=>(v.current="success",e)),(e=>(v.current="error",e.current=e,e))),B(),await k.current))():E(n,c)}),[E]),R=(0,n.useMemo)((()=>Object.defineProperties({query:O},{loading:{get:()=>d},data:{get:()=>b.current},error:{get:()=>w.current}})),[O]);if((0,n.useEffect)((()=>(h.current=!0,Array.isArray(t)&&e&&R.query(e,s.args),()=>h.current=!1)),t),o&&k.current)switch(v.current){case"pending":throw k.current;case"error":throw w.current}return Object.assign([R,_.current,d,w.current],{request:R,...R,response:_.current,data:b.current,loading:d,error:w.current})}var v=t(9859);async function k(e,r){return await c.__secret_internals.loadBricks([e]),(0,v.wrapBrick)(e,r)}function h(){const[e,r]=(0,n.useState)((()=>(0,c.getRuntime)().getNavConfig()));return(0,n.useEffect)((()=>{const e=e=>{r(e.detail)};return window.addEventListener("navConfig.change",e),()=>window.removeEventListener("navConfig.change",e)}),[]),e}function w(e,r){return(0,n.useMemo)((()=>null!=e?(0,n.lazy)((async()=>({default:await k(e,r)}))):null),[e,r])}}}]);
2
- //# sourceMappingURL=4837.c9d5ffd2.js.map