@next-bricks/diagram 0.4.0 → 0.4.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/dist/bricks.json +1 -1
- package/dist/chunks/2108.9bb5ebe7.js +2 -0
- package/dist/chunks/2108.9bb5ebe7.js.map +1 -0
- package/dist/chunks/4922.d504ca2a.js +2 -0
- package/dist/chunks/{4922.4558c07b.js.map → 4922.d504ca2a.js.map} +1 -1
- package/dist/chunks/7312.73a6c3bb.js +3 -0
- package/dist/chunks/{7312.94667cd0.js.map → 7312.73a6c3bb.js.map} +1 -1
- package/dist/chunks/editable-label.cb1a4691.js +3 -0
- package/dist/chunks/{editable-label.e741e544.js.map → editable-label.cb1a4691.js.map} +1 -1
- package/dist/chunks/eo-diagram.fa73c8ae.js +2 -0
- package/dist/chunks/{eo-diagram.ae269315.js.map → eo-diagram.fa73c8ae.js.map} +1 -1
- package/dist/chunks/{main.20df2b07.js → main.cc81c286.js} +2 -2
- package/dist/chunks/{main.20df2b07.js.map → main.cc81c286.js.map} +1 -1
- package/dist/{index.23374df2.js → index.cf4aa49d.js} +2 -2
- package/dist/{index.23374df2.js.map → index.cf4aa49d.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chunks/2108.5684dc40.js +0 -2
- package/dist/chunks/2108.5684dc40.js.map +0 -1
- package/dist/chunks/4922.4558c07b.js +0 -2
- package/dist/chunks/7312.94667cd0.js +0 -3
- package/dist/chunks/editable-label.e741e544.js +0 -3
- package/dist/chunks/eo-diagram.ae269315.js +0 -2
- /package/dist/chunks/{7312.94667cd0.js.LICENSE.txt → 7312.73a6c3bb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{editable-label.e741e544.js.LICENSE.txt → editable-label.cb1a4691.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/4922.4558c07b.js","mappings":"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","sources":["webpack:///./src/diagram/NodeComponent.tsx","webpack:///./src/diagram/processors/findNodeBrick.ts","webpack:///./src/diagram/processors/handleKeyboard.ts","webpack:///./src/diagram/constants.ts","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/LineLabelComponent.tsx","webpack:///./src/diagram/index.tsx","webpack:///./src/diagram/processors/getRenderedLinesAndMarkers.ts","webpack:///./src/diagram/processors/matchEdgeByFilter.ts","webpack:///./src/diagram/processors/getCenterOffsets.ts","webpack:///./src/editable-label/index.tsx","webpack:///./src/diagram/styles.shadow.css","webpack:///./src/editable-label/styles.shadow.css"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport type {\n DiagramNode,\n DiagramNodeId,\n NodeBrickConf,\n RefRepository,\n} from \"./interfaces\";\nimport { findNodeBrick } from \"./processors/findNodeBrick\";\n\nexport interface NodeComponentGroupProps {\n nodes?: DiagramNode[];\n nodeBricks?: NodeBrickConf[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function NodeComponentGroup({\n nodes,\n nodeBricks,\n onRendered,\n}: NodeComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<DiagramNodeId[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: DiagramNodeId, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: DiagramNodeId) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!nodes?.some((node) => !renderedIds.includes(node.id)));\n }, [nodes, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {nodes?.map((node) => (\n <div key={node.id} className=\"node\">\n <NodeComponent\n nodeBricks={nodeBricks}\n node={node}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ))}\n </React.Fragment>\n );\n}\n\nexport interface NodeComponentProps {\n node: DiagramNode;\n nodeBricks?: NodeBrickConf[];\n onRendered?: (id: DiagramNodeId, element: HTMLElement | null) => void;\n onUnmount?: (id: DiagramNodeId) => void;\n}\n\nexport function NodeComponent({\n node,\n nodeBricks,\n onRendered,\n onUnmount,\n}: NodeComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => findNodeBrick(node, nodeBricks)?.useBrick,\n [node, nodeBricks]\n );\n const memoizedData = useMemo(() => ({ node }), [node]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }\n }, [node.id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(node.id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(node.id, element);\n });\n }\n },\n [node.id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }, [node.id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport { NodeBrickConf, DiagramNode } from \"../interfaces\";\n\nexport function findNodeBrick(\n node: DiagramNode,\n nodeBricks: NodeBrickConf[] | undefined\n): NodeBrickConf | undefined {\n return nodeBricks?.find((item) => {\n if (item.nodeType) {\n return ([] as unknown[]).concat(item.nodeType).includes(node.type);\n }\n return checkIfByTransform(item, { node });\n });\n}\n","import { minBy } from \"lodash\";\nimport type { DiagramNode, RenderedEdge, RenderedNode } from \"../interfaces\";\n\nexport type KeyboardAction =\n | KeyboardActionSwitchActiveNode\n | KeyboardActionDeleteNode;\n\nexport interface KeyboardActionSwitchActiveNode {\n action: \"switch-active-node\";\n node?: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteNode {\n action: \"delete-node\";\n node: DiagramNode;\n}\n\nexport function handleKeyboard(\n event: KeyboardEvent,\n {\n renderedNodes,\n renderedEdges,\n activeNodeId,\n }: {\n renderedNodes: RenderedNode[];\n renderedEdges: RenderedEdge[];\n activeNodeId: string | undefined;\n }\n): KeyboardAction | undefined {\n const activeNode = activeNodeId\n ? renderedNodes.find((node) => node.id === activeNodeId)\n : undefined;\n\n if (!activeNode) {\n return;\n }\n\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n let action: KeyboardAction[\"action\"] | undefined;\n let node: RenderedNode | undefined;\n switch (key) {\n case \"ArrowLeft\":\n case 37: {\n node = moveOnX(renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowUp\":\n case 38: {\n node = moveOnY(renderedNodes, renderedEdges, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowRight\":\n case 39: {\n node = moveOnX(renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowDown\":\n case 40: {\n node = moveOnY(renderedNodes, renderedEdges, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"Backspace\":\n case 8:\n case \"Delete\":\n case 46: {\n action = \"delete-node\";\n node = activeNode;\n break;\n }\n }\n if (action) {\n event.preventDefault();\n event.stopPropagation();\n return { action, node: node?.data } as KeyboardAction;\n }\n}\n\nfunction moveOnX(\n renderedNodes: RenderedNode[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n let diff: number;\n const candidates = renderedNodes.filter(\n (node) =>\n node !== activeNode &&\n ((diff = (node.x - activeNode.x) * direction), diff > 0) &&\n diff > Math.abs(activeNode.y - node.y)\n );\n return minBy(\n candidates,\n (node) => (activeNode.y - node.y) ** 2 + (activeNode.x - node.x) ** 2\n );\n}\n\nfunction moveOnY(\n renderedNodes: RenderedNode[],\n renderedEdges: RenderedEdge[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n const from = direction === 1 ? \"source\" : \"target\";\n const to = direction === 1 ? \"target\" : \"source\";\n const candidateEdges = renderedEdges.filter(\n ({ data }) => data[from] === activeNode.id && data[to] !== activeNode.id\n );\n const candidates = candidateEdges\n .map(({ data }) => renderedNodes.find((node) => node.id === data[to]))\n .filter(\n (node) => node && (node.y - activeNode.y) * direction > 0\n ) as RenderedNode[];\n return minBy(\n candidates,\n (node) => (activeNode.y - node.y) ** 2 + (activeNode.x - node.x) ** 2\n );\n}\n","export const DEFAULT_LINE_STROKE_COLOR = \"var(--palette-gray-5)\";\nexport const DEFAULT_LINE_STROKE_WIDTH = 1;\nexport const DEFAULT_LINE_CURVE_TYPE = \"curveBasis\";\nexport const DEFAULT_LINE_INTERACT_STROKE_WIDTH = 20;\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition>,\n arrowOffset: number,\n curveType?: CurveType\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveBasis\":\n curveFactory = curveBasis;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveLinear;\n }\n let arrowOffsetX = 0;\n let arrowOffsetY = 0;\n if (arrowOffset) {\n const { x: x0, y: y0 } = points[points.length - 2];\n const { x: x1, y: y1 } = points[points.length - 1];\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = arrowOffset / distance;\n arrowOffsetX = (x0 - x1) * ratio;\n arrowOffsetY = (y0 - y1) * ratio;\n }\n const transformPoints = points;\n const lineFunction = line()\n .x(\n (d, index) =>\n (d as unknown as { x: number }).x -\n (index === points.length - 1 ? arrowOffsetX : 0)\n )\n .y(\n (d, index) =>\n (d as unknown as { y: number }).y -\n (index === points.length - 1 ? arrowOffsetY : 0)\n )\n .curve(curveFactory);\n return lineFunction(transformPoints as unknown as Array<[number, number]>)!;\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineLabelConf,\n PositionTuple,\n RefRepository,\n RenderedLineLabel,\n TextOptions,\n} from \"./interfaces\";\n\nexport interface LineLabelComponentGroupProps {\n labels?: RenderedLineLabel[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function LineLabelComponentGroup({\n labels,\n onRendered,\n}: LineLabelComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<string[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: string) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!labels?.some((label) => !renderedIds.includes(label.id)));\n }, [labels, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {labels?.map(({ text, label, position, id, edge }) =>\n label ? (\n <div\n key={id}\n className=\"line-label\"\n style={{\n left: position[0],\n top: position[1],\n }}\n >\n <LineLabelComponent\n id={id}\n edge={edge}\n label={label}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ) : (\n <LineTextComponent\n key={id}\n id={id}\n text={text!}\n position={position}\n onRendered={handleRenderer}\n />\n )\n )}\n </React.Fragment>\n );\n}\n\nexport interface LineTextComponentProps {\n id: string;\n text: TextOptions;\n position: PositionTuple;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n // onUnmount?: (id: string) => void;\n}\n\nexport function LineTextComponent({\n id,\n text,\n position,\n onRendered /* , onUnmount */,\n}: LineTextComponentProps): JSX.Element {\n const refCallback = useCallback(\n (element: HTMLDivElement) => {\n onRendered?.(id, element);\n },\n [id, onRendered]\n );\n\n return (\n <div\n className=\"line-label\"\n ref={refCallback}\n style={{\n left: position[0],\n top: position[1],\n ...text!.style,\n }}\n >\n {text!.content}\n </div>\n );\n}\n\n// export const LineLabelComponentGroup = React.memo(LegacyLineLabelComponentGroup);\n\nexport interface LineLabelComponentProps {\n id: string;\n edge: DiagramEdge;\n label: LineLabelConf;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n onUnmount?: (id: string) => void;\n}\n\nexport function LineLabelComponent({\n id,\n edge,\n label,\n onRendered,\n onUnmount,\n}: LineLabelComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => (checkIfByTransform(label, { edge }) ? label.useBrick : null),\n [edge, label]\n );\n\n const memoizedData = useMemo(() => ({ edge }), [edge]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }\n }, [id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(id, element.parentElement);\n });\n }\n },\n [id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }, [id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport dagre from \"@dagrejs/dagre\";\nimport { select } from \"d3-selection\";\nimport { zoom } from \"d3-zoom\";\nimport classNames from \"classnames\";\nimport { pick, uniqueId } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptionsDagre,\n LineConf,\n NodeBrickConf,\n PositionTuple,\n RefRepository,\n RenderedEdge,\n RenderedLineLabel,\n RenderedNode,\n LineTextClipPath,\n TransformLiteral,\n LineTarget,\n} from \"./interfaces\";\nimport { NodeComponentGroup } from \"./NodeComponent\";\nimport { handleKeyboard } from \"./processors/handleKeyboard\";\nimport { getCenterOffsets } from \"./processors/getCenterOffsets\";\nimport { getRenderedLinesAndMarkers } from \"./processors/getRenderedLinesAndMarkers\";\nimport styleText from \"./styles.shadow.css\";\nimport { LineLabelComponentGroup } from \"./LineLabelComponent\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface EoDiagramProps {\n layout?: \"dagre\";\n nodes?: DiagramNode[];\n edges?: DiagramEdge[];\n nodeBricks?: NodeBrickConf[];\n lines?: LineConf[];\n layoutOptions?: LayoutOptionsDagre;\n activeNodeId?: string;\n disableKeyboardAction?: boolean;\n}\n\nexport interface DiagramRef {\n callOnLineLabel(id: string, method: string, ...args: unknown[]): void;\n}\n\nexport interface DiagramHandler {\n moveIntoView(id: string): void;\n}\n\nexport const EoDiagramComponent = forwardRef(LegacyEoDiagramComponent);\n\n/**\n * 构件 `eo-diagram`\n */\nexport\n@defineElement(\"eo-diagram\", {\n styleTexts: [styleText],\n})\nclass EoDiagram extends ReactNextElement implements EoDiagramProps {\n /**\n * @required\n */\n @property({ type: String })\n accessor layout: \"dagre\" | undefined;\n\n @property({ attribute: false })\n accessor nodes: DiagramNode[] | undefined;\n\n @property({ attribute: false })\n accessor edges: DiagramEdge[] | undefined;\n\n @property({ attribute: false })\n accessor nodeBricks: NodeBrickConf[] | undefined;\n\n @property({ attribute: false })\n accessor lines: LineConf[] | undefined;\n\n @property({ attribute: false })\n accessor layoutOptions: LayoutOptionsDagre | undefined;\n\n @property({ type: String })\n accessor activeNodeId: string | undefined;\n\n @property({ type: Boolean })\n accessor disableKeyboardAction: boolean | undefined;\n\n @event({ type: \"activeNode.change\" })\n accessor #activeNodeChangeEvent!: EventEmitter<DiagramNode | undefined>;\n\n #handleActiveNodeChange = (node: DiagramNode | undefined) => {\n // this.activeNodeId = node?.id;\n this.#activeNodeChangeEvent.emit(node);\n };\n\n @event({ type: \"node.delete\" })\n accessor #nodeDelete!: EventEmitter<DiagramNode>;\n\n #handleNodeDelete = (node: DiagramNode) => {\n this.#nodeDelete.emit(node);\n };\n\n @event({ type: \"line.dblclick\" })\n accessor #lineDoubleClick!: EventEmitter<LineTarget>;\n\n #handleLineDoubleClick = (line: LineTarget) => {\n this.#lineDoubleClick.emit(line);\n };\n\n #handleSwitchActiveNode = (id: string | undefined) => {\n this.activeNodeId = id;\n };\n\n #diagramRef = createRef<DiagramRef>();\n\n @method()\n callOnLineLabel(id: string, method: string, ...args: unknown[]) {\n this.#diagramRef.current?.callOnLineLabel(id, method, ...args);\n }\n\n render() {\n return (\n <EoDiagramComponent\n ref={this.#diagramRef}\n layout={this.layout}\n nodes={this.nodes}\n edges={this.edges}\n nodeBricks={this.nodeBricks}\n lines={this.lines}\n layoutOptions={this.layoutOptions}\n activeNodeId={this.activeNodeId}\n disableKeyboardAction={this.disableKeyboardAction}\n onActiveNodeChange={this.#handleActiveNodeChange}\n onSwitchActiveNode={this.#handleSwitchActiveNode}\n onNodeDelete={this.#handleNodeDelete}\n onLineDoubleClick={this.#handleLineDoubleClick}\n />\n );\n }\n}\n\nexport interface EoDiagramComponentProps extends EoDiagramProps {\n onActiveNodeChange?(node: DiagramNode | undefined): void;\n onSwitchActiveNode?(id: string | undefined): void;\n onNodeDelete?(node: DiagramNode): void;\n onLineDoubleClick?(line: LineTarget): void;\n}\n\nexport function LegacyEoDiagramComponent(\n {\n layout,\n nodes,\n edges,\n nodeBricks,\n lines,\n layoutOptions,\n activeNodeId,\n disableKeyboardAction,\n onActiveNodeChange,\n onSwitchActiveNode,\n onNodeDelete,\n onLineDoubleClick,\n }: EoDiagramComponentProps,\n ref: React.Ref<DiagramRef>\n) {\n // const [nodePositions, setNodePositions] = useState<Map<DiagramNodeId, NodePosition> | undefined>();\n const [graph, setGraph] = useState<dagre.graphlib.Graph<RenderedNode> | null>(\n null\n );\n const [nodesReady, setNodesReady] = useState(false);\n const [nodesRenderId, setNodesRenderId] = useState(0);\n const [nodesRefRepository, setNodesRefRepository] =\n useState<RefRepository | null>(null);\n // const [lineLabelsReady, setLineLabelsReady] = useState(false);\n const [lineLabelsRenderId, setLineLabelsRenderId] = useState(0);\n const [lineLabelsRefRepository, setLineLabelsRefRepository] =\n useState<RefRepository | null>(null);\n const [renderedNodes, setRenderedNodes] = useState<RenderedNode[]>([]);\n const [renderedEdges, setRenderedEdges] = useState<RenderedEdge[]>([]);\n // const [renderedLines, setRenderedLines] = useState<RenderedLine[]>([]);\n const [renderedLineLabels, setRenderedLineLabels] = useState<\n RenderedLineLabel[]\n >([]);\n // const [markers, setMarkers] = useState<LineMarker[]>([]);\n\n const draggerRef = useRef<HTMLDivElement>(null);\n const [grabbing, setGrabbing] = useState(false);\n const [transform, setTransform] = useState<TransformLiteral>({\n k: 1,\n x: 0,\n y: 0,\n });\n\n const linePathsRef = useRef(new Map<string, SVGPathElement | null>());\n // const lineLabelsRef = useRef(new Map<string, HTMLDivElement | null>());\n\n const rootRef = useRef<HTMLDivElement>(null);\n const nodesRef = useRef<HTMLDivElement>(null);\n const [offsets, setOffsets] = useState<PositionTuple>([0, 0]);\n const [centered, setCentered] = useState(false);\n\n useImperativeHandle(ref, () => ({\n callOnLineLabel(id, method, ...args) {\n (\n lineLabelsRefRepository?.get(id)\n ?.firstElementChild as unknown as Record<string, Function>\n )?.[method](...args);\n },\n }));\n\n const fixedOptions = useMemo(\n () => ({\n rankdir: \"TB\",\n ranksep: 50,\n edgesep: 10,\n nodesep: 50,\n // align: undefined,\n nodePadding: 0,\n ...layoutOptions,\n }),\n [layoutOptions]\n );\n\n const { nodePadding } = fixedOptions;\n const dagreGraphOptions = useMemo(\n () =>\n pick(fixedOptions, [\"rankdir\", \"ranksep\", \"edgesep\", \"nodesep\", \"align\"]),\n [fixedOptions]\n );\n\n useEffect(() => {\n const nextActiveNode = activeNodeId\n ? nodes?.find((node) => node.id === activeNodeId)\n : undefined;\n onActiveNodeChange?.(nextActiveNode);\n }, [nodes, activeNodeId, onActiveNodeChange]);\n\n useEffect(() => {\n setGraph((previousGraph) => {\n // Create a new directed graph\n const newGraph = new dagre.graphlib.Graph<RenderedNode>();\n\n // Set an object for the graph label\n newGraph.setGraph(dagreGraphOptions);\n\n // Default to assigning a new object as a label for each new edge.\n newGraph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.node(node.id);\n newGraph.setNode(\n node.id,\n previousNode?.data === node\n ? previousNode\n : {\n id: node.id,\n data: node,\n }\n );\n }\n\n for (const edge of edges ?? []) {\n newGraph.setEdge(edge.source, edge.target, { data: edge });\n }\n\n return newGraph;\n });\n }, [edges, nodes, dagreGraphOptions]);\n\n useEffect(() => {\n if (!graph || !nodesRefRepository || graph.nodeCount() === 0) {\n return;\n }\n\n for (const id of graph.nodes()) {\n const node = graph.node(id);\n if (!node) {\n // eslint-disable-next-line no-console\n console.error(\"Diagram node not found: %s\", id);\n continue;\n }\n const element = nodesRefRepository.get(id);\n node.width = (element?.offsetWidth ?? 10) + nodePadding * 2;\n node.height = (element?.offsetHeight ?? 10) + nodePadding * 2;\n }\n\n dagre.layout(graph);\n\n // const positions = new Map<DiagramNodeId, NodePosition>();\n const renderedNodes: RenderedNode[] = [];\n\n for (const v of graph.nodes()) {\n const node = graph.node(v);\n if (!node) {\n continue;\n }\n renderedNodes.push(node);\n const x = node.x - node.width / 2 + nodePadding;\n const y = node.y - node.height / 2 + nodePadding;\n // positions.set(v, { x, y });\n\n const nodeContainer = nodesRefRepository.get(v)?.parentElement;\n if (nodeContainer) {\n nodeContainer.style.left = `${x}px`;\n nodeContainer.style.top = `${y}px`;\n nodeContainer.style.visibility = \"visible\";\n }\n }\n\n setRenderedNodes(renderedNodes);\n\n setRenderedEdges(graph.edges().map((e) => graph.edge(e) as RenderedEdge));\n\n // setNodePositions(positions);\n }, [graph, nodesRefRepository, nodesRenderId, nodePadding]);\n\n const { renderedLines, markers } = useMemo(\n () => getRenderedLinesAndMarkers(renderedEdges, lines),\n [lines, renderedEdges]\n );\n\n /* useEffect(() => {\n const { renderedLines, markers } = getRenderedLinesAndMarkers(\n renderedEdges,\n lines\n );\n setRenderedLines(renderedLines);\n setMarkers(markers);\n }, [lines, renderedEdges]); */\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root || disableKeyboardAction) {\n return;\n }\n const onKeydown = (event: KeyboardEvent) => {\n const action = handleKeyboard(event, {\n renderedNodes,\n renderedEdges,\n activeNodeId,\n });\n\n if (action?.action === \"delete-node\") {\n onNodeDelete?.(action.node);\n } else if (action?.action === \"switch-active-node\" && action.node) {\n onSwitchActiveNode?.(action.node.id);\n }\n };\n root.addEventListener(\"keydown\", onKeydown);\n return () => {\n root.removeEventListener(\"keydown\", onKeydown);\n };\n }, [\n activeNodeId,\n renderedNodes,\n renderedEdges,\n disableKeyboardAction,\n onSwitchActiveNode,\n onNodeDelete,\n ]);\n\n const handleNodesRendered = useCallback(\n (refRepository: RefRepository | null) => {\n if (refRepository) {\n setNodesRenderId((previous) => previous + 1);\n setNodesRefRepository(refRepository);\n }\n setNodesReady((previous) => previous || !!refRepository);\n },\n []\n );\n\n const handleLineLabelsRendered = useCallback(\n (refRepository: RefRepository | null) => {\n if (refRepository) {\n setLineLabelsRenderId((previous) => previous + 1);\n setLineLabelsRefRepository(refRepository);\n }\n // setLineLabelsReady((previous) => previous || !!refRepository);\n },\n []\n );\n\n useEffect(() => {\n const root = rootRef.current;\n const dragger = draggerRef.current as Element;\n if (!root || !dragger) {\n return;\n }\n let moved = false;\n const zoomer = zoom()\n .scaleExtent([1, 1])\n .on(\"start\", () => {\n moved = false;\n setGrabbing(true);\n })\n .on(\"zoom\", (e) => {\n moved = true;\n setTransform(e.transform);\n })\n .on(\"end\", () => {\n setGrabbing(false);\n if (!moved) {\n onSwitchActiveNode?.(undefined);\n }\n });\n select(dragger).call(zoomer);\n\n select(root).on(\"wheel.zoom\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n zoomer.translateBy(select(dragger), e.wheelDeltaX / 5, e.wheelDeltaY / 5);\n });\n }, [onSwitchActiveNode]);\n\n useEffect(() => {\n const root = rootRef.current;\n if (renderedNodes.length === 0 || !root || centered) {\n return;\n }\n setOffsets(\n getCenterOffsets(renderedNodes, [root.clientWidth, root.clientHeight])\n );\n setCentered(true);\n }, [centered, renderedNodes]);\n\n const defPrefix = useMemo(() => `${uniqueId(\"diagram-\")}-`, []);\n const markerPrefix = `${defPrefix}line-arrow-`;\n const clipPathPrefix = `${defPrefix}clip-path-`;\n\n useEffect(() => {\n setRenderedLineLabels((previous) =>\n previous.length === 0 && renderedLines.length === 0\n ? previous\n : (renderedLines\n .map(({ line: { text, label, $id }, edge }) => {\n const path = linePathsRef.current.get($id);\n if ((!text && !label) || !path || !path.getAttribute(\"d\")) {\n return;\n }\n\n // istanbul ignore next\n const { x, y, width, height } =\n process.env.NODE_ENV === \"test\"\n ? { x: 10, y: 20, width: 300, height: 400 }\n : path.getBBox();\n // Make redundant extra padding.\n const padding = 1000;\n const left = x - padding;\n const top = y - padding;\n const right = x + width + padding;\n const bottom = y + height + padding;\n\n // istanbul ignore next\n const point =\n process.env.NODE_ENV === \"test\"\n ? { x: 50, y: 50 }\n : path.getPointAtLength(path.getTotalLength() / 2);\n return {\n text,\n label,\n edge,\n position: [point.x, point.y],\n lineRect: { left, top, right, bottom },\n id: $id,\n };\n })\n .filter(Boolean) as RenderedLineLabel[])\n );\n }, [renderedLines]);\n\n const [clipPathList, setClipPathList] = React.useState<LineTextClipPath[]>(\n []\n );\n\n useEffect(() => {\n if (!lineLabelsRefRepository) {\n return;\n }\n setClipPathList(\n renderedLineLabels\n .map(({ id }) => {\n const element = lineLabelsRefRepository?.get(id);\n if (!element) {\n return;\n }\n const { offsetWidth, offsetHeight } = element;\n // Do not clip when the label takes no space.\n if (\n process.env.NODE_ENV !== \"test\" &&\n (offsetWidth === 0 || offsetHeight === 0)\n ) {\n return;\n }\n const padding = 3;\n return {\n x0: element.offsetLeft - offsetWidth / 2 - padding,\n y0: element.offsetTop - offsetHeight / 2 - padding,\n w: offsetWidth + padding * 2,\n h: offsetHeight + padding * 2,\n id,\n };\n })\n .filter(Boolean) as LineTextClipPath[]\n );\n }, [lineLabelsRenderId, lineLabelsRefRepository, renderedLineLabels]);\n\n if (layout !== \"dagre\") {\n return <div>{`Diagram layout not supported: \"${layout}\"`}</div>;\n }\n\n return (\n <div\n className={classNames(\"diagram\", { ready: nodesReady && centered })}\n tabIndex={-1}\n ref={rootRef}\n >\n <div className={classNames(\"dragger\", { grabbing })} ref={draggerRef} />\n <svg width=\"100%\" height=\"100%\" className=\"lines\">\n <defs>\n {markers.map(({ strokeColor }, index) => (\n <marker\n key={index}\n id={`${markerPrefix}${index}`}\n viewBox=\"0 0 6 6\"\n refX={3}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto\"\n >\n <path\n d=\"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z\"\n stroke={strokeColor}\n strokeWidth={1}\n fill={strokeColor}\n />\n </marker>\n ))}\n {clipPathList.map(({ x0, y0, w, h, id }) => {\n const lineText = renderedLineLabels.find((item) => item.id === id);\n if (!lineText) {\n return;\n }\n const { left, top, right, bottom } = lineText.lineRect;\n // https://css-tricks.com/cutting-inner-part-element-using-clip-path/\n return (\n <clipPath key={id} id={`${clipPathPrefix}${id}`}>\n <polygon\n points={[\n `${x0},${y0 + h}`,\n `${x0 + w},${y0 + h}`,\n `${x0 + w},${y0}`,\n `${x0},${y0}`,\n `${x0},${top}`,\n `${right},${top}`,\n `${right},${bottom}`,\n `${left},${bottom}`,\n `${left},${top}`,\n `${x0},${top}`,\n ].join(\" \")}\n />\n </clipPath>\n );\n })}\n </defs>\n <g\n transform={`translate(${offsets[0] + transform.x} ${\n offsets[1] + transform.y\n }) scale(${transform.k})`}\n >\n {renderedLines.map(({ line, d, markerIndex, edge }) => (\n <g\n className={classNames(\"line\", {\n interactable: line.interactable,\n })}\n key={line.$id}\n onDoubleClick={\n line.interactable\n ? (e) => (\n e.preventDefault(),\n e.stopPropagation(),\n onLineDoubleClick?.({ id: line.$id, edge: edge })\n )\n : undefined\n }\n >\n <path\n ref={(element) => linePathsRef.current.set(line.$id, element)}\n stroke={line.strokeColor}\n strokeWidth={line.strokeWidth}\n d={d}\n fill=\"none\"\n markerEnd={\n markerIndex === undefined\n ? undefined\n : `url(#${markerPrefix}${markerIndex})`\n }\n clipPath={\n clipPathList.some((clip) => clip.id === line.$id)\n ? `url(#${clipPathPrefix}${line.$id})`\n : undefined\n }\n />\n {line.interactable && (\n <path\n // This `path` is made for expanding interaction area of graph lines.\n // 保证此path在svg上层,从而扩大触发区域\n d={d}\n fill=\"none\"\n stroke=\"transparent\"\n strokeWidth={line.interactStrokeWidth ?? 5}\n />\n )}\n </g>\n ))}\n </g>\n </svg>\n <div\n className=\"line-labels\"\n style={{\n left: offsets[0] + transform.x,\n top: offsets[1] + transform.y,\n }}\n >\n <LineLabelComponentGroup\n labels={renderedLineLabels}\n onRendered={handleLineLabelsRendered}\n />\n </div>\n <div\n className=\"nodes\"\n ref={nodesRef}\n style={{\n left: offsets[0] + transform.x,\n top: offsets[1] + transform.y,\n }}\n >\n <NodeComponentGroup\n nodes={nodes}\n nodeBricks={nodeBricks}\n // nodePositions={nodePositions}\n onRendered={handleNodesRendered}\n />\n </div>\n </div>\n );\n}\n","import { findIndex, uniqueId } from \"lodash\";\nimport { __secret_internals } from \"@next-core/runtime\";\nimport type {\n LineConf,\n LineMarker,\n RenderedEdge,\n RenderedLine,\n} from \"../interfaces\";\nimport { matchEdgeByFilter } from \"./matchEdgeByFilter\";\nimport {\n DEFAULT_LINE_CURVE_TYPE,\n DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\nimport { curveLine } from \"../lines/curveLine\";\n\nexport function getRenderedLinesAndMarkers(\n renderedEdges: RenderedEdge[],\n lines: LineConf[] | undefined\n) {\n const renderedLines: RenderedLine[] = [];\n const markers: LineMarker[] = [];\n for (const { data, points } of renderedEdges) {\n const { label, ...restLineConf } =\n lines?.find((line) => matchEdgeByFilter(data, line)) ?? {};\n\n const computedLineConf = __secret_internals.legacyDoTransform(\n { edge: data },\n restLineConf\n ) as LineConf | undefined;\n if (computedLineConf?.draw === false) {\n continue;\n }\n const line: RenderedLine[\"line\"] = {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n curveType: DEFAULT_LINE_CURVE_TYPE,\n interactStrokeWidth: DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n ...computedLineConf,\n label,\n $id: uniqueId(\"line-\"),\n };\n\n let markerIndex: number | undefined;\n if (line.arrow) {\n const marker: LineMarker = {\n strokeColor: line.strokeColor,\n };\n markerIndex = findIndex(markers, marker);\n if (markerIndex === -1) {\n markerIndex = markers.push(marker) - 1;\n }\n }\n\n const d = curveLine(points, line.arrow ? -5 : 0, line.curveType);\n\n renderedLines.push({\n line,\n d,\n markerIndex,\n edge: data,\n });\n }\n return {\n renderedLines,\n markers,\n };\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport type { DiagramEdge, LineConf } from \"../interfaces\";\n\nexport function matchEdgeByFilter(\n edge: DiagramEdge,\n filter: LineConf\n): boolean {\n if (!filter) {\n return false;\n }\n if (filter.edgeType) {\n return ([] as string[]).concat(filter.edgeType).includes(edge.type!);\n }\n return checkIfByTransform(filter, { edge });\n}\n","import type { RenderedNode } from \"../interfaces\";\n\nexport function getCenterOffsets(\n renderedNodes: RenderedNode[],\n [canvasWidth, canvasHeight]: [canvasWidth: number, canvasHeight: number]\n): [offsetX: number, offsetY: number] {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const node of renderedNodes) {\n const hw = node.width / 2;\n const hh = node.height / 2;\n const l = node.x - hw;\n const r = node.x + hw;\n const t = node.y - hh;\n const b = node.y + hh;\n if (l < left) {\n left = l;\n }\n if (r > right) {\n right = r;\n }\n if (t < top) {\n top = t;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const width = right - left;\n const height = bottom - top;\n\n return [(canvasWidth - width) / 2 - top, (canvasHeight - height) / 2 - left];\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface EditableLabelProps {\n label?: string;\n type?: LabelType;\n}\n\nexport type LabelType = \"line\" | \"default\";\n\nexport interface EditableLabelRef {\n enableEditing(): void;\n}\n\nexport const EditableLabelComponent = forwardRef(LegacyEditableLabelComponent);\n\n/**\n * 构件 `diagram.editable-label`\n */\nexport\n@defineElement(\"diagram.editable-label\", {\n styleTexts: [styleText],\n})\nclass EditableLabel extends ReactNextElement implements EditableLabelProps {\n @property()\n accessor label: string | undefined;\n\n @property({ render: false })\n accessor type: LabelType | undefined;\n\n @event({ type: \"label.change\" })\n accessor #labelChange!: EventEmitter<string>;\n\n #handleLabelChange = (value: string) => {\n this.#labelChange.emit(value);\n };\n\n @method()\n enableEditing() {\n this.#editableLabelRef.current?.enableEditing();\n }\n\n #editableLabelRef = createRef<EditableLabelRef>();\n\n render() {\n return (\n <EditableLabelComponent\n ref={this.#editableLabelRef}\n label={this.label}\n onLabelChange={this.#handleLabelChange}\n />\n );\n }\n}\n\nexport interface EditableLabelComponentProps extends EditableLabelProps {\n onLabelChange?(value: string): void;\n}\n\nexport function LegacyEditableLabelComponent(\n { label: _label, onLabelChange }: EditableLabelComponentProps,\n ref: React.Ref<EditableLabelRef>\n) {\n const label = _label ?? \"\";\n const [currentLabel, setCurrentLabel] = useState<string>(label);\n const [editingLabel, setEditingLabel] = useState(false);\n const [shouldEmitLabelChange, setShouldEmitLabelChange] = useState(false);\n const labelInputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => ({\n enableEditing() {\n setEditingLabel(true);\n },\n }));\n\n useEffect(() => {\n setCurrentLabel(label);\n }, [label]);\n\n const handleEditLabel = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setEditingLabel(true);\n }, []);\n\n useEffect(() => {\n if (editingLabel) {\n // Prevent scroll when focusing.\n // Otherwise the diagram svg may be clipped in Chrome.\n labelInputRef.current?.focus({ preventScroll: true });\n labelInputRef.current?.select();\n }\n }, [editingLabel]);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentLabel(event.target.value);\n },\n []\n );\n\n const handleInputKeydown = useCallback((event: React.KeyboardEvent) => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Enter\" || key === 13) {\n labelInputRef.current?.blur();\n }\n }, []);\n\n const handleInputBlur = useCallback(() => {\n setEditingLabel(false);\n setShouldEmitLabelChange(true);\n }, []);\n\n useEffect(() => {\n if (shouldEmitLabelChange) {\n onLabelChange?.(currentLabel);\n setShouldEmitLabelChange(false);\n }\n }, [currentLabel, onLabelChange, shouldEmitLabelChange]);\n\n return (\n <div\n className={classNames(\"label\", {\n editing: editingLabel,\n empty: !currentLabel,\n })}\n >\n <input\n className=\"label-input\"\n value={currentLabel}\n ref={labelInputRef}\n onChange={handleInputChange}\n onKeyDown={handleInputKeydown}\n onBlur={handleInputBlur}\n />\n <div className=\"label-text\" onDoubleClick={handleEditLabel}>\n {currentLabel}\n </div>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.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}.ready{opacity:1}.dragger,\n.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.node{position:absolute;visibility:hidden}.dragger{width:100%;height:100%;cursor:-webkit-grab;cursor:grab}.grabbing{cursor:-webkit-grabbing;cursor:grabbing}.line-label{position:absolute;transform:translate(-50%,-50%);white-space:pre-line;width:-webkit-max-content;width:-moz-max-content;width:max-content;text-align:center}.lines{pointer-events:none}.line.interactable{pointer-events:auto}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-label-line-height:inherit;--local-label-font-size:inherit;--local-label-color:inherit;--local-label-font-weight:inherit}:host([hidden]){display:none}:host([type=\"line\"]){--local-label-line-height:18px;--local-label-font-size:11px;--local-label-color:var(--color-secondary-text);--local-label-font-weight:400}*{box-sizing:border-box}.label{max-width:168px;margin:-3px}.label-text,\n.label-input{width:100%;height:24px;padding:3px;border:none;line-height:var(--local-label-line-height);font-size:var(--local-label-font-size);color:var(--local-label-color);font-weight:var(--local-label-font-weight);text-align:center;font-family:inherit;cursor:text;-webkit-user-select:text;-moz-user-select:text;user-select:text}.label-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.label.editing .label-text,\n.label.empty:not(.editing) .label-text,\n.label:not(.editing) .label-input{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["NodeComponentGroup","_ref","nodes","nodeBricks","onRendered","rendered","setRendered","useState","renderedIds","setRenderedIds","refRepository","useMemo","Map","handleRenderer","useCallback","id","element","set","previous","includes","concat","handleUnmount","index","indexOf","slice","delete","useEffect","some","node","React","map","key","className","NodeComponent","onUnmount","_ref2","useBrick","_findNodeBrick","find","item","nodeType","type","checkIfByTransform","findNodeBrick","memoizedData","setTimeout","refCallback","ignoredCallback","ReactUseBrick","data","moveOnX","renderedNodes","activeNode","direction","diff","candidates","filter","x","Math","abs","y","minBy","moveOnY","renderedEdges","from","to","_ref3","DEFAULT_LINE_STROKE_COLOR","DEFAULT_LINE_STROKE_WIDTH","DEFAULT_LINE_CURVE_TYPE","DEFAULT_LINE_INTERACT_STROKE_WIDTH","curveLine","points","arrowOffset","curveType","Array","isArray","curveFactory","curveBasis","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveLinear","arrowOffsetX","arrowOffsetY","x0","y0","length","x1","y1","ratio","sqrt","pow","transformPoints","line","d","curve","lineFunction","LineLabelComponentGroup","labels","label","text","position","edge","style","left","top","LineLabelComponent","LineTextComponent","ref","_objectSpread","content","_ref4","parentElement","_EoDiagram","defineElement","property","event","method","createDecorators","EoDiagramComponent","forwardRef","LegacyEoDiagramComponent","_dec","styleTexts","styleText","_dec2","String","_dec3","attribute","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","Boolean","_dec10","_dec11","_dec12","_dec13","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_activeNodeChangeEvent","_handleActiveNodeChange","_J","_nodeDelete","_handleNodeDelete","_K","_lineDoubleClick","_handleLineDoubleClick","_handleSwitchActiveNode","_diagramRef","EoDiagram","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","get","_get_lineDoubleClick2","_set_lineDoubleClick2","_get_nodeDelete2","_set_nodeDelete2","_get_activeNodeChangeEvent2","_set_activeNodeChangeEvent2","writable","value","_initProto","_init_layout","_init_nodes","_init_edges","_init_nodeBricks","_init_lines","_init_layoutOptions","_init_activeNodeId","_init_disableKeyboardAction","_init_activeNodeChangeEvent","_classPrivateFieldGet","this","emit","_init_nodeDelete","_init_lineDoubleClick","activeNodeId","createRef","layout","v","_classPrivateFieldSet","edges","lines","layoutOptions","disableKeyboardAction","callOnLineLabel","_classPrivateFieldGet2","_len","args","_key","current","render","onActiveNodeChange","onSwitchActiveNode","onNodeDelete","onLineDoubleClick","_set_activeNodeChangeEvent","_get_activeNodeChangeEvent","_set_nodeDelete","_get_nodeDelete","_set_lineDoubleClick","_get_lineDoubleClick","graph","setGraph","nodesReady","setNodesReady","nodesRenderId","setNodesRenderId","nodesRefRepository","setNodesRefRepository","lineLabelsRenderId","setLineLabelsRenderId","lineLabelsRefRepository","setLineLabelsRefRepository","setRenderedNodes","setRenderedEdges","renderedLineLabels","setRenderedLineLabels","draggerRef","useRef","grabbing","setGrabbing","transform","setTransform","k","linePathsRef","rootRef","nodesRef","offsets","setOffsets","centered","setCentered","useImperativeHandle","_lineLabelsRefReposit","_len2","_key2","firstElementChild","fixedOptions","rankdir","ranksep","edgesep","nodesep","nodePadding","dagreGraphOptions","pick","nextActiveNode","undefined","previousGraph","newGraph","dagre","Graph","setDefaultEdgeLabel","previousNode","setNode","setEdge","source","target","nodeCount","_element$offsetWidth","_element$offsetHeight","width","offsetWidth","height","offsetHeight","console","error","_nodesRefRepository$g","push","nodeContainer","visibility","e","renderedLines","markers","_loop","_lines$find","matchEdgeByFilter","edgeType","restLineConf","_objectWithoutProperties","_excluded","computedLineConf","__secret_internals","legacyDoTransform","draw","markerIndex","strokeColor","strokeWidth","interactStrokeWidth","$id","uniqueId","arrow","marker","findIndex","getRenderedLinesAndMarkers","root","onKeydown","action","_node","keyCode","which","preventDefault","stopPropagation","handleKeyboard","addEventListener","removeEventListener","handleNodesRendered","handleLineLabelsRendered","dragger","moved","zoomer","zoom","scaleExtent","on","select","call","translateBy","wheelDeltaX","wheelDeltaY","canvasWidth","canvasHeight","Infinity","right","bottom","hw","hh","l","r","t","b","getCenterOffsets","clientWidth","clientHeight","defPrefix","markerPrefix","clipPathPrefix","path","getAttribute","getBBox","padding","point","getPointAtLength","getTotalLength","lineRect","clipPathList","setClipPathList","offsetLeft","offsetTop","w","h","classNames","ready","tabIndex","viewBox","refX","refY","markerWidth","markerHeight","orient","stroke","fill","_ref5","lineText","join","_ref6","_line$interactStrokeW","interactable","onDoubleClick","markerEnd","clipPath","clip","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS","_EditableLabel","EditableLabelComponent","LegacyEditableLabelComponent","_labelChange","_handleLabelChange","_editableLabelRef","EditableLabel","_get_labelChange2","_set_labelChange2","_init_label","_init_type","_init_labelChange","enableEditing","onLabelChange","_set_labelChange","_get_labelChange","_label","currentLabel","setCurrentLabel","editingLabel","setEditingLabel","shouldEmitLabelChange","setShouldEmitLabelChange","labelInputRef","handleEditLabel","_labelInputRef$curren","_labelInputRef$curren2","focus","preventScroll","handleInputChange","handleInputKeydown","_labelInputRef$curren3","blur","handleInputBlur","editing","empty","onChange","onKeyDown","onBlur","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/4922.d504ca2a.js","mappings":"uUAgBO,SAASA,EAAkBC,GAIO,IAJN,MACjCC,EAAK,WACLC,EAAU,WACVC,GACwBH,GACjBI,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAA0B,IAC1DG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAACC,EAAmBC,KACdA,GACFN,EAAcO,IAAIF,EAAIC,GAExBP,GAAgBS,GACdA,EAASC,SAASJ,GAAMG,EAAWA,EAASE,OAAOL,IACpD,GAEH,CAACL,IAGGW,GAAgBP,EAAAA,EAAAA,cACnBC,IACCN,GAAgBS,IACd,IAAMI,EAAQJ,EAASK,QAAQR,GAC/B,OAAkB,IAAXO,EACHJ,EACAA,EAASM,MAAM,EAAGF,GAAOF,OAAOF,EAASM,MAAMF,EAAQ,GAAG,IAEhEZ,EAAce,OAAOV,EAAG,GAE1B,CAACL,IAiBH,OAdAgB,EAAAA,EAAAA,YAAU,KAERpB,IAAaJ,SAAAA,EAAOyB,MAAMC,IAAUpB,EAAYW,SAASS,EAAKb,OAAK,GAClE,CAACb,EAAOM,KAEXkB,EAAAA,EAAAA,YACE,KACEtB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlCwB,IAAAA,cAACA,IAAAA,SAAc,KACZ3B,aAAK,EAALA,EAAO4B,KAAKF,GACXC,IAAAA,cAAA,OAAKE,IAAKH,EAAKb,GAAIiB,UAAU,QAC3BH,IAAAA,cAACI,EAAa,CACZ9B,WAAYA,EACZyB,KAAMA,EACNxB,WAAYS,EACZqB,UAAWb,OAMvB,CASO,SAASY,EAAaE,GAKc,IALb,KAC5BP,EAAI,WACJzB,EAAU,WACVC,EAAU,UACV8B,GACmBC,EACbC,GAAWzB,EAAAA,EAAAA,UACf,SAAA0B,EAAA,OAAqC,QAArCA,EC3FG,SACLT,EACAzB,GAEA,OAAOA,aAAU,EAAVA,EAAYmC,MAAMC,GACnBA,EAAKC,SACC,GAAiBpB,OAAOmB,EAAKC,UAAUrB,SAASS,EAAKa,OAExDC,EAAAA,EAAAA,oBAAmBH,EAAM,CAAEX,UAEtC,CDiFUe,CAAcf,EAAMzB,UAAW,IAAAkC,OAAA,EAA/BA,EAAiCD,QAAQ,GAC/C,CAACR,EAAMzB,IAEHyC,GAAejC,EAAAA,EAAAA,UAAQ,KAAM,CAAGiB,UAAS,CAACA,KAEhDF,EAAAA,EAAAA,YAAU,KACHU,GAEHS,YAAW,KACTzC,SAAAA,EAAawB,EAAKb,GAAI,KAAK,GAE/B,GACC,CAACa,EAAKb,GAAIX,EAAYgC,KAEzBV,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAYN,EAAKb,GAAG,GAKxB,IAGF,IAAM+B,GAAchC,EAAAA,EAAAA,cACjBE,IACKA,GAGF6B,YAAW,KACTzC,SAAAA,EAAawB,EAAKb,GAAIC,EAAQ,GAElC,GAEF,CAACY,EAAKb,GAAIX,IAGN2C,GAAkBjC,EAAAA,EAAAA,cAAY,KAClC+B,YAAW,KACTzC,SAAAA,EAAawB,EAAKb,GAAI,KAAK,GAC3B,GACD,CAACa,EAAKb,GAAIX,IAEb,OAAKgC,EAKHP,IAAAA,cAACmB,EAAAA,cAAa,CACZF,YAAaA,EAGbC,gBAAiBA,EACjBX,SAAUA,EACVa,KAAML,IAVD,IAaX,CEpEA,SAASM,EACPC,EACAC,EACAC,GAEA,IAAIC,EACEC,EAAaJ,EAAcK,QAC9B5B,GACCA,IAASwB,IACPE,GAAQ1B,EAAK6B,EAAIL,EAAWK,GAAKJ,GAAmB,GACtDC,EAAOI,KAAKC,IAAIP,EAAWQ,EAAIhC,EAAKgC,KAExC,OAAOC,EAAAA,EAAAA,OACLN,GACC3B,IAAUwB,EAAWQ,EAAIhC,EAAKgC,IAAM,GAAKR,EAAWK,EAAI7B,EAAK6B,IAAM,GAExE,CAEA,SAASK,EACPX,EACAY,EACAX,EACAC,GAEA,IAAMW,EAAqB,IAAdX,EAAkB,SAAW,SACpCY,EAAmB,IAAdZ,EAAkB,SAAW,SAIlCE,EAHiBQ,EAAcP,QACnCrB,IAAA,IAAC,KAAEc,GAAMd,EAAA,OAAKc,EAAKe,KAAUZ,EAAWrC,IAAMkC,EAAKgB,KAAQb,EAAWrC,EAAE,IAGvEe,KAAIoC,IAAA,IAAC,KAAEjB,GAAMiB,EAAA,OAAKf,EAAcb,MAAMV,GAASA,EAAKb,KAAOkC,EAAKgB,IAAI,IACpET,QACE5B,GAASA,IAASA,EAAKgC,EAAIR,EAAWQ,GAAKP,EAAY,IAE5D,OAAOQ,EAAAA,EAAAA,OACLN,GACC3B,IAAUwB,EAAWQ,EAAIhC,EAAKgC,IAAM,GAAKR,EAAWK,EAAI7B,EAAK6B,IAAM,GAExE,C,cC1HaU,EAA4B,wBAC5BC,EAA4B,EAC5BC,EAA0B,aAC1BC,EAAqC,G,4DCa3C,SAASC,EACdC,EACAC,EACAC,GAEA,IAAKC,MAAMC,QAAQJ,GACjB,MAAO,GAET,IAAIK,EACJ,OAAQH,GACN,IAAK,aACHG,EAAeC,EAAAA,GACf,MACF,IAAK,aACHD,EAAeE,EAAAA,GACf,MACF,IAAK,aACHF,EAAeG,EAAAA,GACf,MACF,IAAK,iBACHH,EAAeI,EAAAA,EACf,MACF,IAAK,iBACHJ,EAAeK,EAAAA,EACf,MACF,IAAK,eACHL,EAAeM,EAAAA,EACf,MACF,QACEN,EAAeO,EAAAA,EAEnB,IAAIC,EAAe,EACfC,EAAe,EACnB,GAAIb,EAAa,CACf,IAAQhB,EAAG8B,EAAI3B,EAAG4B,GAAOhB,EAAOA,EAAOiB,OAAS,IACxChC,EAAGiC,EAAI9B,EAAG+B,GAAOnB,EAAOA,EAAOiB,OAAS,GAE1CG,EAAQnB,EADGf,KAAKmC,KAAKnC,KAAKoC,IAAIJ,EAAKH,EAAI,GAAK7B,KAAKoC,IAAIH,EAAKH,EAAI,IAEpEH,GAAgBE,EAAKG,GAAME,EAC3BN,GAAgBE,EAAKG,GAAMC,CAC7B,CACA,IAAMG,EAAkBvB,EAaxB,OAZqBwB,EAAAA,EAAAA,KAClBvC,GACC,CAACwC,EAAG3E,IACD2E,EAA+BxC,GAC/BnC,IAAUkD,EAAOiB,OAAS,EAAIJ,EAAe,KAEjDzB,GACC,CAACqC,EAAG3E,IACD2E,EAA+BrC,GAC/BtC,IAAUkD,EAAOiB,OAAS,EAAIH,EAAe,KAEjDY,MAAMrB,EACFsB,CAAaJ,EACtB,C,mHCtDO,SAASK,GAAuBnG,GAGO,IAHN,OACtCoG,EAAM,WACNjG,GAC6BH,GACtBI,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAAmB,IACnDG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAACC,EAAYC,KACPA,GACFN,EAAcO,IAAIF,EAAIC,GAExBP,GAAgBS,GACdA,EAASC,SAASJ,GAAMG,EAAWA,EAASE,OAAOL,IACpD,GAEH,CAACL,IAGGW,GAAgBP,EAAAA,EAAAA,cACnBC,IACCN,GAAgBS,IACd,IAAMI,EAAQJ,EAASK,QAAQR,GAC/B,OAAkB,IAAXO,EACHJ,EACAA,EAASM,MAAM,EAAGF,GAAOF,OAAOF,EAASM,MAAMF,EAAQ,GAAG,IAEhEZ,EAAce,OAAOV,EAAG,GAE1B,CAACL,IAiBH,OAdAgB,EAAAA,EAAAA,YAAU,KAERpB,IAAa+F,SAAAA,EAAQ1E,MAAM2E,IAAW9F,EAAYW,SAASmF,EAAMvF,OAAK,GACrE,CAACsF,EAAQ7F,KAEZkB,EAAAA,EAAAA,YACE,KACEtB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlCwB,IAAAA,cAACA,IAAAA,SAAc,KACZwE,aAAM,EAANA,EAAQvE,KAAIK,IAAA,IAAC,KAAEoE,EAAI,MAAED,EAAK,SAAEE,EAAQ,GAAEzF,EAAE,KAAE0F,GAAMtE,EAAA,OAC/CmE,EACEzE,IAAAA,cAAA,OACEE,IAAKhB,EACLiB,UAAU,aACV0E,MAAO,CACLC,KAAMH,EAAS,GACfI,IAAKJ,EAAS,KAGhB3E,IAAAA,cAACgF,GAAkB,CACjB9F,GAAIA,EACJ0F,KAAMA,EACNH,MAAOA,EACPlG,WAAYS,EACZqB,UAAWb,KAIfQ,IAAAA,cAACiF,GAAiB,CAChB/E,IAAKhB,EACLA,GAAIA,EACJwF,KAAMA,EACNC,SAAUA,EACVpG,WAAYS,GAEf,IAIT,CAUO,SAASiG,GAAiB5C,GAKO,IALN,GAChCnD,EAAE,KACFwF,EAAI,SACJC,EAAQ,WACRpG,GACuB8D,EACjBpB,GAAchC,EAAAA,EAAAA,cACjBE,IACCZ,SAAAA,EAAaW,EAAIC,EAAQ,GAE3B,CAACD,EAAIX,IAGP,OACEyB,IAAAA,cAAA,OACEG,UAAU,aACV+E,IAAKjE,EACL4D,OAAKM,EAAAA,EAAAA,GAAA,CACHL,KAAMH,EAAS,GACfI,IAAKJ,EAAS,IACXD,EAAMG,QAGVH,EAAMU,QAGb,CAYO,SAASJ,GAAkBK,GAMc,IANb,GACjCnG,EAAE,KACF0F,EAAI,MACJH,EAAK,WACLlG,EAAU,UACV8B,GACwBgF,EAClB9E,GAAWzB,EAAAA,EAAAA,UACf,KAAO+B,EAAAA,EAAAA,oBAAmB4D,EAAO,CAAEG,SAAUH,EAAMlE,SAAW,MAC9D,CAACqE,EAAMH,IAGH1D,GAAejC,EAAAA,EAAAA,UAAQ,KAAM,CAAG8F,UAAS,CAACA,KAEhD/E,EAAAA,EAAAA,YAAU,KACHU,GAEHS,YAAW,KACTzC,SAAAA,EAAaW,EAAI,KAAK,GAE1B,GACC,CAACA,EAAIX,EAAYgC,KAEpBV,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAYnB,EAAG,GAKnB,IAGF,IAAM+B,GAAchC,EAAAA,EAAAA,cACjBE,IACKA,GAGF6B,YAAW,KACTzC,SAAAA,EAAaW,EAAIC,EAAQmG,cAAc,GAE3C,GAEF,CAACpG,EAAIX,IAGD2C,GAAkBjC,EAAAA,EAAAA,cAAY,KAClC+B,YAAW,KACTzC,SAAAA,EAAaW,EAAI,KAAK,GACtB,GACD,CAACA,EAAIX,IAER,OAAKgC,EAKHP,IAAAA,cAACmB,EAAAA,cAAa,CACZF,YAAaA,EAGbC,gBAAiBA,EACjBX,SAAUA,EACVa,KAAML,IAVD,IAaX,CC3KA,IAsFWwE,IAtFL,cAAEC,GAAa,SAAEC,GAAUC,MAAK,UAAEC,KAAWC,EAAAA,EAAAA,oBAqBtCC,IAAqBC,EAAAA,EAAAA,YAAWC,IAE7CC,EAICR,GAAc,aAAc,CAC3BS,WAAY,CAACC,GAAAA,KACbC,EAKCV,GAAS,CAAE7E,KAAMwF,SAASC,EAG1BZ,GAAS,CAAEa,WAAW,IAAQC,EAG9Bd,GAAS,CAAEa,WAAW,IAAQE,EAG9Bf,GAAS,CAAEa,WAAW,IAAQG,EAG9BhB,GAAS,CAAEa,WAAW,IAAQI,EAG9BjB,GAAS,CAAEa,WAAW,IAAQK,EAG9BlB,GAAS,CAAE7E,KAAMwF,SAASQ,GAG1BnB,GAAS,CAAE7E,KAAMiG,UAAUC,GAG3BpB,GAAM,CAAE9E,KAAM,sBAAsBmG,GAQpCrB,GAAM,CAAE9E,KAAM,gBAAgBoG,GAO9BtB,GAAM,CAAE9E,KAAM,kBAAkBqG,GAahCtB,KAAQ,IAAAuB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAAG,GAAA,IAAAH,QAAAI,GAAA,IAAAJ,QAAAK,GAAA,IAAAL,QAAAM,GAAA,IAAAN,QAAAO,GAAA,IAAAP,QAAAQ,GAAA,IAAAR,QAAAS,GAAA,IAAAT,QAAAU,GAAA,IAAAV,QAAAW,GAAA,IAAAX,QAAAY,GAAA,IAAAZ,QAAAa,GAAA,IAAAb,QAAAc,GAAA,IAAAd,QAAAe,GAAA,IAAAf,QAAAgB,GAAA,IAAAhB,QAAAiB,GAAA,IAAAjB,QAAAkB,GAAA,IAAAlB,QA3DX,MAAAmB,WAGwBC,EAAAA,iBAA2CC,cAAA,SAAAC,YAAAC,EAAAA,EAAAA,GAAA,KAAAR,GAAA,CAAAS,IAAAC,GAAAxJ,IAAAyJ,MAAAH,EAAAA,EAAAA,GAAA,KAAAX,GAAA,CAAAY,IAAAG,GAAA1J,IAAA2J,MAAAL,EAAAA,EAAAA,GAAA,KAAAd,GAAA,CAAAe,IAAAK,GAAA5J,IAAA6J,MACjEP,EAAAA,EAAAA,GAAA,KAAAxB,GAAA,CAAAgC,UAAA,EAAAC,OAAAC,GAAA,MAAAC,EAAA,UAAAX,EAAAA,EAAAA,GAAA,KAAAtB,GAAA,CAAA8B,UAAA,EAAAC,MAAAG,EAAA,SAAAZ,EAAAA,EAAAA,GAAA,KAAArB,GAAA,CAAA6B,UAAA,EAAAC,MAAAI,EAAA,SAAAb,EAAAA,EAAAA,GAAA,KAAApB,GAAA,CAAA4B,UAAA,EAAAC,MAAAK,EAAA,SAAAd,EAAAA,EAAAA,GAAA,KAAAnB,GAAA,CAAA2B,UAAA,EAAAC,MAAAM,EAAA,SAAAf,EAAAA,EAAAA,GAAA,KAAAlB,GAAA,CAAA0B,UAAA,EAAAC,MAAAO,EAAA,SAAAhB,EAAAA,EAAAA,GAAA,KAAAjB,GAAA,CAAAyB,UAAA,EAAAC,MAAAQ,GAAA,SAAAjB,EAAAA,EAAAA,GAAA,KAAAhB,GAAA,CAAAwB,UAAA,EAAAC,MAAAS,GAAA,SAAAlB,EAAAA,EAAAA,GAAA,KAAAf,GAAA,CAAAuB,UAAA,EAAAC,MAAAU,GAAA,SAAAnB,EAAAA,EAAAA,GAAA,KAAAb,GAAA,CAAAqB,UAAA,EAAAC,MA8B2BpJ,KAEzB+J,EAAAA,EAAAA,GAAAC,KAAInC,IAAwBoC,KAAKjK,EAAK,KACvC2I,EAAAA,EAAAA,GAAA,KAAAZ,GAAA,CAAAoB,UAAA,EAAAC,MAAAc,GAAA,SAAAvB,EAAAA,EAAAA,GAAA,KAAAV,GAAA,CAAAkB,UAAA,EAAAC,MAKoBpJ,KACnB+J,EAAAA,EAAAA,GAAAC,KAAIhC,IAAaiC,KAAKjK,EAAK,KAC5B2I,EAAAA,EAAAA,GAAA,KAAAT,GAAA,CAAAiB,UAAA,EAAAC,MAAAe,GAAA,SAAAxB,EAAAA,EAAAA,GAAA,KAAAP,GAAA,CAAAe,UAAA,EAAAC,MAKyBhF,KACxB2F,EAAAA,EAAAA,GAAAC,KAAI7B,IAAkB8B,KAAK7F,EAAK,KACjCuE,EAAAA,EAAAA,GAAA,KAAAN,GAAA,CAAAc,UAAA,EAAAC,MAE0BjK,IACzB6K,KAAKI,aAAejL,CAAE,KACvBwJ,EAAAA,EAAAA,GAAA,KAAAL,GAAA,CAAAa,UAAA,EAAAC,OAEaiB,EAAAA,EAAAA,cAAuB,CAjD5BC,aAAM,OAAAP,EAAAA,EAAAA,GAAA,KAAA5C,GAAA,CAANmD,WAAMC,IAAAC,EAAAA,EAAAA,GAAA,KAAArD,GAAAoD,EAAA,CAGNjM,YAAK,OAAAyL,EAAAA,EAAAA,GAAA,KAAA1C,GAAA,CAAL/I,UAAKiM,IAAAC,EAAAA,EAAAA,GAAA,KAAAnD,GAAAkD,EAAA,CAGLE,YAAK,OAAAV,EAAAA,EAAAA,GAAA,KAAAzC,GAAA,CAALmD,UAAKF,IAAAC,EAAAA,EAAAA,GAAA,KAAAlD,GAAAiD,EAAA,CAGLhM,iBAAU,OAAAwL,EAAAA,EAAAA,GAAA,KAAAxC,GAAA,CAAVhJ,eAAUgM,IAAAC,EAAAA,EAAAA,GAAA,KAAAjD,GAAAgD,EAAA,CAGVG,YAAK,OAAAX,EAAAA,EAAAA,GAAA,KAAAvC,GAAA,CAALkD,UAAKH,IAAAC,EAAAA,EAAAA,GAAA,KAAAhD,GAAA+C,EAAA,CAGLI,oBAAa,OAAAZ,EAAAA,EAAAA,GAAA,KAAAtC,GAAA,CAAbkD,kBAAaJ,IAAAC,EAAAA,EAAAA,GAAA,KAAA/C,GAAA8C,EAAA,CAGbH,mBAAY,OAAAL,EAAAA,EAAAA,GAAA,KAAArC,GAAA,CAAZ0C,iBAAYG,IAAAC,EAAAA,EAAAA,GAAA,KAAA9C,GAAA6C,EAAA,CAGZK,4BAAqB,OAAAb,EAAAA,EAAAA,GAAA,KAAApC,GAAA,CAArBiD,0BAAqBL,IAAAC,EAAAA,EAAAA,GAAA,KAAA7C,GAAA4C,EAAA,CA+B9BM,gBAAgB1L,EAAYyG,GAAoC,QAAAkF,EAAAC,EAAArC,UAAA7E,OAAjBmH,EAAI,IAAAjI,MAAAgI,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAA,GAAAvC,UAAAuC,GACzB,QAAxBH,GAAAf,EAAAA,EAAAA,GAAAC,KAAI1B,IAAa4C,eAAO,IAAAJ,GAAxBA,EAA0BD,gBAAgB1L,EAAIyG,KAAWoF,EAC3D,CAEAG,SACE,OACElL,IAAAA,cAAC6F,GAAkB,CACjBX,KAAG4E,EAAAA,EAAAA,GAAEC,KAAI1B,IACTgC,OAAQN,KAAKM,OACbhM,MAAO0L,KAAK1L,MACZmM,MAAOT,KAAKS,MACZlM,WAAYyL,KAAKzL,WACjBmM,MAAOV,KAAKU,MACZC,cAAeX,KAAKW,cACpBP,aAAcJ,KAAKI,aACnBQ,sBAAuBZ,KAAKY,sBAC5BQ,oBAAkBrB,EAAAA,EAAAA,GAAEC,KAAIlC,IACxBuD,oBAAkBtB,EAAAA,EAAAA,GAAEC,KAAI3B,IACxBiD,cAAYvB,EAAAA,EAAAA,GAAEC,KAAI/B,IAClBsD,mBAAiBxB,EAAAA,EAAAA,GAAEC,KAAI5B,KAG7B,EACD,SAAAc,GAAAqB,GAAAiB,GAAA,KAAAjB,EAAA,UAAAtB,KAAA,OAAAwC,GAAA,eAAAzC,GAAAuB,GAAAmB,GAAA,KAAAnB,EAAA,UAAAxB,KAAA,OAAA4C,GAAA,eAAA7C,GAAAyB,GAAAqB,GAAA,KAAArB,EAAA,UAAA1B,KAAA,OAAAgD,GAAA,MASM,SAAS7F,GAAwB3H,EAetC8G,GACA,IAfA,OACEmF,EAAM,MACNhM,EAAK,MACLmM,EAAK,WACLlM,EAAU,MACVmM,EAAK,cACLC,EAAa,aACbP,EAAY,sBACZQ,EAAqB,mBACrBQ,EAAkB,mBAClBC,EAAkB,aAClBC,EAAY,kBACZC,GACwBlN,GAInByN,EAAOC,IAAYpN,EAAAA,EAAAA,UACxB,OAEKqN,EAAYC,IAAiBtN,EAAAA,EAAAA,WAAS,IACtCuN,EAAeC,IAAoBxN,EAAAA,EAAAA,UAAS,IAC5CyN,EAAoBC,IACzB1N,EAAAA,EAAAA,UAA+B,OAE1B2N,EAAoBC,IAAyB5N,EAAAA,EAAAA,UAAS,IACtD6N,EAAyBC,IAC9B9N,EAAAA,EAAAA,UAA+B,OAC1B4C,EAAemL,IAAoB/N,EAAAA,EAAAA,UAAyB,KAC5DwD,EAAewK,IAAoBhO,EAAAA,EAAAA,UAAyB,KAE5DiO,EAAoBC,IAAyBlO,EAAAA,EAAAA,UAElD,IAGImO,GAAaC,EAAAA,EAAAA,QAAuB,OACnCC,EAAUC,IAAetO,EAAAA,EAAAA,WAAS,IAClCuO,GAAWC,KAAgBxO,EAAAA,EAAAA,UAA2B,CAC3DyO,EAAG,EACHvL,EAAG,EACHG,EAAG,IAGCqL,IAAeN,EAAAA,EAAAA,QAAO,IAAI/N,KAG1BsO,IAAUP,EAAAA,EAAAA,QAAuB,MACjCQ,IAAWR,EAAAA,EAAAA,QAAuB,OACjCS,GAASC,KAAc9O,EAAAA,EAAAA,UAAwB,CAAC,EAAG,KACnD+O,GAAUC,KAAehP,EAAAA,EAAAA,WAAS,IAEzCiP,EAAAA,EAAAA,qBAAoBzI,GAAK,KAAM,CAC7B0F,gBAAgB1L,EAAIyG,GAAiB,QAAAiI,EAAAC,EAAApF,UAAA7E,OAANmH,EAAI,IAAAjI,MAAA+K,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ/C,EAAI+C,EAAA,GAAArF,UAAAqF,GAE/BvB,SAAgC,QAATqB,EAAvBrB,EAAyB5D,IAAIzJ,UAAG,IAAA0O,GACX,QADWA,EAAhCA,EACIG,yBAAiB,IAAAH,GAFvBA,EAGIjI,MAAWoF,EACjB,MAGF,IAAMiD,IAAelP,EAAAA,EAAAA,UACnB,KAAAqG,EAAAA,EAAAA,GAAC,CACC8I,QAAS,KACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GAETC,YAAa,GACV3D,IAEL,CAACA,KAGG,YAAE2D,IAAgBL,GAClBM,IAAoBxP,EAAAA,EAAAA,UACxB,KACEyP,EAAAA,EAAAA,MAAKP,GAAc,CAAC,UAAW,UAAW,UAAW,UAAW,WAClE,CAACA,MAGHnO,EAAAA,EAAAA,YAAU,KACR,IAAM2O,EAAiBrE,EACnB9L,aAAK,EAALA,EAAOoC,MAAMV,GAASA,EAAKb,KAAOiL,SAClCsE,EACJtD,SAAAA,EAAqBqD,EAAe,GACnC,CAACnQ,EAAO8L,EAAcgB,KAEzBtL,EAAAA,EAAAA,YAAU,KACRiM,GAAU4C,IAER,IAAMC,EAAW,IAAIC,IAAAA,SAAeC,OAUpC,IAAK,IAAM9O,KAPX4O,EAAS7C,SAASwC,IAGlBK,EAASG,qBAAoB,WAC3B,MAAO,CAAC,CACV,IAEmBzQ,QAAAA,EAAS,IAAI,CAC9B,IAAM0Q,EAAeL,aAAa,EAAbA,EAAe3O,KAAKA,EAAKb,IAC9CyP,EAASK,QACPjP,EAAKb,IACL6P,aAAY,EAAZA,EAAc3N,QAASrB,EACnBgP,EACA,CACE7P,GAAIa,EAAKb,GACTkC,KAAMrB,GAGhB,CAEA,IAAK,IAAM6E,KAAQ4F,QAAAA,EAAS,GAC1BmE,EAASM,QAAQrK,EAAKsK,OAAQtK,EAAKuK,OAAQ,CAAE/N,KAAMwD,IAGrD,OAAO+J,CAAQ,GACf,GACD,CAACnE,EAAOnM,EAAOiQ,MAElBzO,EAAAA,EAAAA,YAAU,KACR,GAAKgM,GAAUM,GAA4C,IAAtBN,EAAMuD,YAA3C,CAIA,IAAK,IAAMlQ,KAAM2M,EAAMxN,QAAS,KAAAgR,EAAAC,EACxBvP,EAAO8L,EAAM9L,KAAKb,GACxB,GAAKa,EAAL,CAKA,IAAMZ,EAAUgN,EAAmBxD,IAAIzJ,GACvCa,EAAKwP,OAA6B,QAArBF,EAAClQ,aAAO,EAAPA,EAASqQ,mBAAW,IAAAH,EAAAA,EAAI,IAAoB,EAAdhB,GAC5CtO,EAAK0P,QAA+B,QAAtBH,EAACnQ,aAAO,EAAPA,EAASuQ,oBAAY,IAAAJ,EAAAA,EAAI,IAAoB,EAAdjB,EAH9C,MAFEsB,QAAQC,MAAM,6BAA8B1Q,EAMhD,CAEA0P,IAAAA,OAAa/C,GAGb,IAAMvK,EAAgC,GAEtC,IAAK,IAAMgJ,KAAKuB,EAAMxN,QAAS,KAAAwR,EACvB9P,EAAO8L,EAAM9L,KAAKuK,GACxB,GAAKvK,EAAL,CAGAuB,EAAcwO,KAAK/P,GACnB,IAAM6B,EAAI7B,EAAK6B,EAAI7B,EAAKwP,MAAQ,EAAIlB,GAC9BtM,EAAIhC,EAAKgC,EAAIhC,EAAK0P,OAAS,EAAIpB,GAG/B0B,EAAyC,QAA5BF,EAAG1D,EAAmBxD,IAAI2B,UAAE,IAAAuF,OAAA,EAAzBA,EAA2BvK,cAC7CyK,IACFA,EAAclL,MAAMC,KAAO,GAAHvF,OAAMqC,EAAC,MAC/BmO,EAAclL,MAAME,IAAM,GAAHxF,OAAMwC,EAAC,MAC9BgO,EAAclL,MAAMmL,WAAa,UAVnC,CAYF,CAEAvD,EAAiBnL,GAEjBoL,EAAiBb,EAAMrB,QAAQvK,KAAKgQ,GAAMpE,EAAMjH,KAAKqL,KAvCrD,CAuCyE,GAGxE,CAACpE,EAAOM,EAAoBF,EAAeoC,KAE9C,IAAM,cAAE6B,GAAa,QAAEC,KAAYrR,EAAAA,EAAAA,UACjC,ICzTG,SACLoD,EACAuI,GAEA,IAAMyF,EAAgC,GAChCC,EAAwB,GAAGC,EAAA,SAAAhP,GACa,IAAAiP,EAC5CjS,EACsD,QADtDiS,EACE5F,aAAK,EAALA,EAAOhK,MAAM0D,IAASmM,OCrB1B1L,EDqB4CxD,KCpB5CO,EDoBkDwC,KCf9CxC,EAAO4O,SACD,GAAgBhR,OAAOoC,EAAO4O,UAAUjR,SAASsF,EAAKhE,OAEzDC,EAAAA,EAAAA,oBAAmBc,EAAQ,CAAEiD,UAV/B,IACLA,EACAjD,CDoBuD,WAAC,IAAA0O,EAAAA,EAAI,CAAC,GADrD,MAAE5L,GAAwBrG,EAAdoS,GAAYC,EAAAA,EAAAA,GAAArS,EAAAsS,GAGxBC,EAAmBC,EAAAA,mBAAmBC,kBAC1C,CAAEjM,KAAMxD,GACRoP,GAEF,IAA+B,KAA3BG,aAAgB,EAAhBA,EAAkBG,MAAgB,SAGtC,IAUIC,EAVE5M,GAA0BgB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAC9B6L,YAAa1O,EACb2O,YAAa1O,EACbM,UAAWL,EACX0O,oBAAqBzO,GAClBkO,GAAgB,IACnBlM,QACA0M,KAAKC,EAAAA,EAAAA,UAAS,WAIhB,GAAIjN,EAAKkN,MAAO,CACd,IAAMC,EAAqB,CACzBN,YAAa7M,EAAK6M,cAGC,KADrBD,GAAcQ,EAAAA,EAAAA,WAAUpB,EAASmB,MAE/BP,EAAcZ,EAAQL,KAAKwB,GAAU,EAEzC,CAEA,IAAMlN,EAAI1B,EAAUC,EAAQwB,EAAKkN,OAAS,EAAI,EAAGlN,EAAKtB,WAEtDqN,EAAcJ,KAAK,CACjB3L,OACAC,IACA2M,cACAnM,KAAMxD,GAEV,EAxCA,IAAK,IAAM,KAAEA,EAAI,OAAEuB,KAAYT,EAAakO,EAAAhP,GAyC5C,MAAO,CACL8O,gBACAC,UAEJ,CDsQUqB,CAA2BtP,EAAeuI,IAChD,CAACA,EAAOvI,KAYVrC,EAAAA,EAAAA,YAAU,KACR,IAAM4R,EAAOpE,GAAQpC,QACrB,GAAKwG,IAAQ9G,EAAb,CAGA,IAAM+G,EAAahM,IACjB,IAAMiM,EJ5UL,SACLjM,EAAoBtH,GAUQ,IAT5B,cACEkD,EAAa,cACbY,EAAa,aACbiI,GAKD/L,EAEKmD,EAAa4I,EACf7I,EAAcb,MAAMV,GAASA,EAAKb,KAAOiL,SACzCsE,EAEJ,GAAKlN,EAAL,CAIA,IAIIoQ,EACA5R,EAmCQ6R,EAlCZ,OALElM,EAAMxF,KACoCwF,EAAMmM,SACNnM,EAAMoM,OAIhD,IAAK,YACL,KAAK,GACH/R,EAAOsB,EAAQC,EAAeC,GAAa,GAC3CoQ,EAAS,qBACT,MAEF,IAAK,UACL,KAAK,GACH5R,EAAOkC,EAAQX,EAAeY,EAAeX,GAAa,GAC1DoQ,EAAS,qBACT,MAEF,IAAK,aACL,KAAK,GACH5R,EAAOsB,EAAQC,EAAeC,EAAY,GAC1CoQ,EAAS,qBACT,MAEF,IAAK,YACL,KAAK,GACH5R,EAAOkC,EAAQX,EAAeY,EAAeX,EAAY,GACzDoQ,EAAS,qBACT,MAEF,IAAK,YACL,KAAK,EACL,IAAK,SACL,KAAK,GACHA,EAAS,cACT5R,EAAOwB,EAIX,GAAIoQ,EAGF,OAFAjM,EAAMqM,iBACNrM,EAAMsM,kBACC,CAAEL,SAAQ5R,KAAU,QAAN6R,EAAE7R,SAAI,IAAA6R,OAAA,EAAJA,EAAMxQ,KA7C/B,CA+CF,CI2QqB6Q,CAAevM,EAAO,CACnCpE,gBACAY,gBACAiI,iBAGqB,iBAAnBwH,aAAM,EAANA,EAAQA,QACVtG,SAAAA,EAAesG,EAAO5R,MACM,wBAAnB4R,aAAM,EAANA,EAAQA,SAAmCA,EAAO5R,OAC3DqL,SAAAA,EAAqBuG,EAAO5R,KAAKb,IACnC,EAGF,OADAuS,EAAKS,iBAAiB,UAAWR,GAC1B,KACLD,EAAKU,oBAAoB,UAAWT,EAAU,CAhBhD,CAiBC,GACA,CACDvH,EACA7I,EACAY,EACAyI,EACAS,EACAC,IAGF,IAAM+G,IAAsBnT,EAAAA,EAAAA,cACzBJ,IACKA,IACFqN,GAAkB7M,GAAaA,EAAW,IAC1C+M,EAAsBvN,IAExBmN,GAAe3M,GAAaA,KAAcR,GAAc,GAE1D,IAGIwT,IAA2BpT,EAAAA,EAAAA,cAC9BJ,IACKA,IACFyN,GAAuBjN,GAAaA,EAAW,IAC/CmN,EAA2B3N,GAC7B,GAGF,KAGFgB,EAAAA,EAAAA,YAAU,KACR,IAAM4R,EAAOpE,GAAQpC,QACfqH,EAAUzF,EAAW5B,QAC3B,GAAKwG,GAASa,EAAd,CAGA,IAAIC,GAAQ,EACNC,GAASC,EAAAA,EAAAA,MACZC,YAAY,CAAC,EAAG,IAChBC,GAAG,SAAS,KACXJ,GAAQ,EACRvF,GAAY,EAAK,IAElB2F,GAAG,QAAS1C,IACXsC,GAAQ,EACRrF,GAAa+C,EAAEhD,UAAU,IAE1B0F,GAAG,OAAO,KACT3F,GAAY,GACPuF,GACHnH,SAAAA,OAAqBqD,EACvB,KAEJmE,EAAAA,EAAAA,GAAON,GAASO,KAAKL,IAErBI,EAAAA,EAAAA,GAAOnB,GAAMkB,GAAG,cAAe1C,IAC7BA,EAAE+B,kBACF/B,EAAE8B,iBACFS,EAAOM,aAAYF,EAAAA,EAAAA,GAAON,GAAUrC,EAAE8C,YAAc,EAAG9C,EAAE+C,YAAc,EAAE,GAvB3E,CAwBE,GACD,CAAC5H,KAEJvL,EAAAA,EAAAA,YAAU,KACR,IAAM4R,EAAOpE,GAAQpC,QACQ,IAAzB3J,EAAcsC,QAAiB6N,IAAQhE,KAG3CD,GG/aG,SACLlM,EAA6BlD,GAEO,IADnC6U,EAAaC,GAA0D9U,EAEpE0G,EAAOqO,IACPpO,EAAMoO,IACNC,GAAQ,IACRC,GAAS,IACb,IAAK,IAAMtT,KAAQuB,EAAe,CAChC,IAAMgS,EAAKvT,EAAKwP,MAAQ,EAClBgE,EAAKxT,EAAK0P,OAAS,EACnB+D,EAAIzT,EAAK6B,EAAI0R,EACbG,EAAI1T,EAAK6B,EAAI0R,EACbI,EAAI3T,EAAKgC,EAAIwR,EACbI,EAAI5T,EAAKgC,EAAIwR,EACfC,EAAI1O,IACNA,EAAO0O,GAELC,EAAIL,IACNA,EAAQK,GAENC,EAAI3O,IACNA,EAAM2O,GAEJC,EAAIN,IACNA,EAASM,EAEb,CAKA,MAAO,EAAEV,GAHKG,EAAQtO,IAGU,EAAIC,GAAMmO,GAF3BG,EAAStO,IAE2C,EAAID,EACzE,CH+YM8O,CAAiBtS,EAAe,CAACmQ,EAAKoC,YAAapC,EAAKqC,gBAE1DpG,IAAY,GAAK,GAChB,CAACD,GAAUnM,IAEd,IAAMyS,IAAYjV,EAAAA,EAAAA,UAAQ,IAAM,GAANS,QAAS6R,EAAAA,EAAAA,UAAS,YAAW,MAAK,IACtD4C,GAAe,GAAHzU,OAAMwU,GAAS,eAC3BE,GAAiB,GAAH1U,OAAMwU,GAAS,eAEnClU,EAAAA,EAAAA,YAAU,KACR+M,GAAuBvN,GACD,IAApBA,EAASuE,QAAyC,IAAzBsM,GAActM,OACnCvE,EACC6Q,GACEjQ,KAAIK,IAA0C,IAAvC6D,MAAM,KAAEO,EAAI,MAAED,EAAK,IAAE0M,GAAK,KAAEvM,GAAMtE,EAClC4T,EAAO9G,GAAanC,QAAQtC,IAAIwI,GACtC,IAAMzM,GAASD,IAAWyP,GAASA,EAAKC,aAAa,KAArD,CAKA,IAAM,EAAEvS,EAAC,EAAEG,EAAC,MAAEwN,EAAK,OAAEE,GAGfyE,EAAKE,UAELC,EAAU,IACVvP,EAAOlD,EAAIyS,EACXtP,EAAMhD,EAAIsS,EACVjB,EAAQxR,EAAI2N,EAAQ8E,EACpBhB,EAAStR,EAAI0N,EAAS4E,EAGtBC,EAGAJ,EAAKK,iBAAiBL,EAAKM,iBAAmB,GACpD,MAAO,CACL9P,OACAD,QACAG,OACAD,SAAU,CAAC2P,EAAM1S,EAAG0S,EAAMvS,GAC1B0S,SAAU,CAAE3P,OAAMC,MAAKqO,QAAOC,UAC9BnU,GAAIiS,EAzBN,CA0BC,IAEFxP,OAAOkF,UACf,GACA,CAACqJ,KAEJ,IAAOwE,GAAcC,IAAmB3U,IAAAA,SACtC,IAmCF,OAhCAH,EAAAA,EAAAA,YAAU,KACH0M,GAGLoI,GACEhI,EACG1M,KAAIoC,IAAY,IAAX,GAAEnD,GAAImD,EACJlD,EAAUoN,aAAuB,EAAvBA,EAAyB5D,IAAIzJ,GAC7C,GAAKC,EAAL,CAGA,IAAM,YAAEqQ,EAAW,aAAEE,GAAiBvQ,EAEtC,GAEmB,IAAhBqQ,GAAsC,IAAjBE,EAKxB,MAAO,CACLhM,GAAIvE,EAAQyV,WAAapF,EAAc,EAFzB,EAGd7L,GAAIxE,EAAQ0V,UAAYnF,EAAe,EAHzB,EAIdoF,EAAGtF,EAAc6E,EACjBU,EAAGrF,EAAe2E,EAClBnV,KAfF,CAgBC,IAEFyC,OAAOkF,SACX,GACA,CAACwF,EAAoBE,EAAyBI,IAElC,UAAXtC,EACKrK,IAAAA,cAAA,6CAAAT,OAAwC8K,EAAM,MAIrDrK,IAAAA,cAAA,OACEG,UAAW6U,IAAW,UAAW,CAAEC,MAAOlJ,GAAc0B,KACxDyH,UAAW,EACXhQ,IAAKmI,IAELrN,IAAAA,cAAA,OAAKG,UAAW6U,IAAW,UAAW,CAAEjI,aAAa7H,IAAK2H,IAC1D7M,IAAAA,cAAA,OAAKuP,MAAM,OAAOE,OAAO,OAAOtP,UAAU,SACxCH,IAAAA,cAAA,YACGmQ,GAAQlQ,KAAI,CAAAoF,EAAkB5F,KAAK,IAAtB,YAAEuR,GAAa3L,EAAA,OAC3BrF,IAAAA,cAAA,UACEE,IAAKT,EACLP,GAAE,GAAAK,OAAKyU,IAAYzU,OAAGE,GACtB0V,QAAQ,UACRC,KAAM,EACNC,KAAM,EACNC,YAAa,EACbC,aAAc,EACdC,OAAO,QAEPxV,IAAAA,cAAA,QACEoE,EAAE,gCACFqR,OAAQzE,EACRC,YAAa,EACbyE,KAAM1E,IAED,IAEV0D,GAAazU,KAAI0V,IAA0B,IAAzB,GAAEjS,EAAE,GAAEC,EAAE,EAAEmR,EAAC,EAAEC,EAAC,GAAE7V,GAAIyW,EAC/BC,EAAWjJ,EAAmBlM,MAAMC,GAASA,EAAKxB,KAAOA,IAC/D,GAAK0W,EAAL,CAGA,IAAM,KAAE9Q,EAAI,IAAEC,EAAG,MAAEqO,EAAK,OAAEC,GAAWuC,EAASnB,SAE9C,OACEzU,IAAAA,cAAA,YAAUE,IAAKhB,EAAIA,GAAE,GAAAK,OAAK0U,IAAc1U,OAAGL,IACzCc,IAAAA,cAAA,WACE2C,OAAQ,CAAC,GAADpD,OACHmE,EAAE,KAAAnE,OAAIoE,EAAKoR,GAAC,GAAAxV,OACZmE,EAAKoR,EAAC,KAAAvV,OAAIoE,EAAKoR,GAAC,GAAAxV,OAChBmE,EAAKoR,EAAC,KAAAvV,OAAIoE,GAAE,GAAApE,OACZmE,EAAE,KAAAnE,OAAIoE,GAAE,GAAApE,OACRmE,EAAE,KAAAnE,OAAIwF,GAAG,GAAAxF,OACT6T,EAAK,KAAA7T,OAAIwF,GAAG,GAAAxF,OACZ6T,EAAK,KAAA7T,OAAI8T,GAAM,GAAA9T,OACfuF,EAAI,KAAAvF,OAAI8T,GAAM,GAAA9T,OACduF,EAAI,KAAAvF,OAAIwF,GAAG,GAAAxF,OACXmE,EAAE,KAAAnE,OAAIwF,IACT8Q,KAAK,OAjBb,CAmBa,KAIjB7V,IAAAA,cAAA,KACEiN,UAAS,aAAA1N,OAAegO,GAAQ,GAAKN,GAAUrL,EAAC,KAAArC,OAC9CgO,GAAQ,GAAKN,GAAUlL,EAAC,YAAAxC,OACf0N,GAAUE,EAAC,MAErB+C,GAAcjQ,KAAI6V,IAAA,IAAAC,GAAC,KAAE5R,EAAI,EAAEC,EAAC,YAAE2M,EAAW,KAAEnM,GAAMkR,EAAA,OAChD9V,IAAAA,cAAA,KACEG,UAAW6U,IAAW,OAAQ,CAC5BgB,aAAc7R,EAAK6R,eAErB9V,IAAKiE,EAAKgN,IACV8E,cACE9R,EAAK6R,aACA/F,IACCA,EAAE8B,iBACF9B,EAAE+B,kBACF1G,aAAiB,EAAjBA,EAAoB,CAAEpM,GAAIiF,EAAKgN,IAAKvM,KAAMA,UAE5C6J,GAGNzO,IAAAA,cAAA,QACEkF,IAAM/F,GAAYiO,GAAanC,QAAQ7L,IAAI+E,EAAKgN,IAAKhS,GACrDsW,OAAQtR,EAAK6M,YACbC,YAAa9M,EAAK8M,YAClB7M,EAAGA,EACHsR,KAAK,OACLQ,eACkBzH,IAAhBsC,OACItC,EAAS,QAAAlP,OACDyU,IAAYzU,OAAGwR,EAAW,KAExCoF,SACEzB,GAAa5U,MAAMsW,GAASA,EAAKlX,KAAOiF,EAAKgN,MAAI,QAAA5R,OACrC0U,IAAc1U,OAAG4E,EAAKgN,IAAG,UACjC1C,IAGPtK,EAAK6R,cACJhW,IAAAA,cAAA,QAGEoE,EAAGA,EACHsR,KAAK,OACLD,OAAO,cACPxE,YAAqC,QAA1B8E,EAAE5R,EAAK+M,2BAAmB,IAAA6E,EAAAA,EAAI,IAG3C,MAIV/V,IAAAA,cAAA,OACEG,UAAU,cACV0E,MAAO,CACLC,KAAMyI,GAAQ,GAAKN,GAAUrL,EAC7BmD,IAAKwI,GAAQ,GAAKN,GAAUlL,IAG9B/B,IAAAA,cAACuE,GAAuB,CACtBC,OAAQmI,EACRpO,WAAY8T,MAGhBrS,IAAAA,cAAA,OACEG,UAAU,QACV+E,IAAKoI,GACLzI,MAAO,CACLC,KAAMyI,GAAQ,GAAKN,GAAUrL,EAC7BmD,IAAKwI,GAAQ,GAAKN,GAAUlL,IAG9B/B,IAAAA,cAAC7B,EAAkB,CACjBE,MAAOA,EACPC,WAAYA,EAEZC,WAAY6T,MAKtB,CA9fCiE,GAAA/N,KAAA2H,GAAA5G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAA2B,GAAAD,GAAAtB,GAAAyB,GAAAD,GAAAvB,GAAA0B,GAAAD,GAAAvC,IAAAkN,GAAA/Q,GAAAgR,KAAAC,EAAAA,EAAAA,GAAAH,GAAA,EAAAlQ,EAAA,aAAAE,EAAA,YAAAE,EAAA,YAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,oBAAAC,EAAA,mBAAAC,GAAA,4BAAAE,GAAA,0BAAA2P,IAAA3M,EAAAA,EAAAA,GAAA2M,EAAA9O,IAAA,CAAA8O,EAAAnM,KAAAC,EAAAA,EAAAA,GAAAkM,EAAA9O,GAAA2C,IAAA,CAAAvD,GAAA,eAAA0P,IAAA3M,EAAAA,EAAAA,GAAA2M,EAAA3O,IAAA,CAAA2O,EAAAnM,KAAAC,EAAAA,EAAAA,GAAAkM,EAAA3O,GAAAwC,IAAA,CAAAtD,GAAA,oBAAAyP,IAAA3M,EAAAA,EAAAA,GAAA2M,EAAAxO,IAAA,CAAAwO,EAAAnM,KAAAC,EAAAA,EAAAA,GAAAkM,EAAAxO,GAAAqC,IAAA,CAAArD,GAAA,uBAAAjB,GAAA,GAAA0Q,GAAArO,GAAAsO,KAAAC,EAAAA,EAAAA,GAAAF,KAhFuBnO,EAAAA,mBAAgBgO,I,2CInB7BM,G,YApCHrR,cAAa,GAAEC,SAAQ,GAAEC,MAAK,GAAEC,OAAMA,KAAKC,EAAAA,EAAAA,oBAatCkR,IAAyBhR,EAAAA,EAAAA,YAAWiR,IAEjD/Q,GAICR,GAAc,yBAA0B,CACvCS,WAAY,CAACC,GAAAA,KACbC,GAECV,KAAUY,GAGVZ,GAAS,CAAEyF,QAAQ,IAAQ3E,GAG3Bb,GAAM,CAAE9E,KAAM,iBAAiB4F,GAO/Bb,KAAQ,IAAAuB,GAAA,IAAAC,QAAAC,GAAA,IAAAD,QAAAE,GAAA,IAAAF,QAAA6P,GAAA,IAAA7P,QAAA8P,GAAA,IAAA9P,QAAA+P,GAAA,IAAA/P,QAjBX,MAAAgQ,WAG4B5O,EAAAA,iBAA+CC,cAAA,SAAAC,YAAAC,EAAAA,EAAAA,GAAA,KAAAsO,GAAA,CAAArO,IAAAyO,GAAAhY,IAAAiY,MAAA3O,EAAAA,EAAAA,GAAA,KAAAxB,GAAA,CAAAgC,UAAA,EAAAC,OAAAC,GAAA,MAAAkO,GAAA,UAAA5O,EAAAA,EAAAA,GAAA,KAAAtB,GAAA,CAAA8B,UAAA,EAAAC,MAAAoO,GAAA,SAAA7O,EAAAA,EAAAA,GAAA,KAAArB,GAAA,CAAA6B,UAAA,EAAAC,MAAAqO,GAAA,SAAA9O,EAAAA,EAAAA,GAAA,KAAAuO,GAAA,CAAA/N,UAAA,EAAAC,MAUnDA,KACpBW,EAAAA,EAAAA,GAAAC,KAAIiN,IAAchN,KAAKb,EAAM,KAC9BT,EAAAA,EAAAA,GAAA,KAAAwO,GAAA,CAAAhO,UAAA,EAAAC,OAOmBiB,EAAAA,EAAAA,cAA6B,CAjBxC3F,YAAK,OAAAqF,EAAAA,EAAAA,GAAA,KAAA5C,GAAA,CAALzC,UAAK6F,IAAAC,EAAAA,EAAAA,GAAA,KAAArD,GAAAoD,EAAA,CAGL1J,WAAI,OAAAkJ,EAAAA,EAAAA,GAAA,KAAA1C,GAAA,CAAJxG,SAAI0J,IAAAC,EAAAA,EAAAA,GAAA,KAAAnD,GAAAkD,EAAA,CAUbmN,gBAAgB,IAAA5M,EACgB,QAA9BA,GAAAf,EAAAA,EAAAA,GAAAC,KAAImN,IAAmBjM,eAAO,IAAAJ,GAA9BA,EAAgC4M,eAClC,CAIAvM,SACE,OACElL,IAAAA,cAAC8W,GAAsB,CACrB5R,KAAG4E,EAAAA,EAAAA,GAAEC,KAAImN,IACTzS,MAAOsF,KAAKtF,MACZiT,eAAa5N,EAAAA,EAAAA,GAAEC,KAAIkN,KAGzB,EACD,SAAAI,GAAA/M,GAAAqN,GAAA,KAAArN,EAAA,UAAA8M,KAAA,OAAAQ,GAAA,MAMM,SAASb,GAA4B3Y,EAE1C8G,GACA,IAFET,MAAOoT,EAAM,cAAEH,GAA4CtZ,EAGvDqG,EAAQoT,QAAAA,EAAU,IACjBC,EAAcC,IAAmBrZ,EAAAA,EAAAA,UAAiB+F,IAClDuT,EAAcC,IAAmBvZ,EAAAA,EAAAA,WAAS,IAC1CwZ,EAAuBC,IAA4BzZ,EAAAA,EAAAA,WAAS,GAC7D0Z,GAAgBtL,EAAAA,EAAAA,QAAyB,OAE/Ca,EAAAA,EAAAA,qBAAoBzI,GAAK,KAAM,CAC7BuS,gBACEQ,GAAgB,EAClB,OAGFpY,EAAAA,EAAAA,YAAU,KACRkY,EAAgBtT,EAAM,GACrB,CAACA,IAEJ,IAAM4T,GAAkBpZ,EAAAA,EAAAA,cAAagR,IACnCA,EAAE8B,iBACF9B,EAAE+B,kBACFiG,GAAgB,EAAK,GACpB,KAEHpY,EAAAA,EAAAA,YAAU,KACU,IAAAyY,EAAAC,EAAdP,IAGmB,QAArBM,EAAAF,EAAcnN,eAAO,IAAAqN,GAArBA,EAAuBE,MAAM,CAAEC,eAAe,IACzB,QAArBF,EAAAH,EAAcnN,eAAO,IAAAsN,GAArBA,EAAuB3F,SACzB,GACC,CAACoF,IAEJ,IAAMU,GAAoBzZ,EAAAA,EAAAA,cACvByG,IACCqS,EAAgBrS,EAAMyJ,OAAOhG,MAAM,GAErC,IAGIwP,GAAqB1Z,EAAAA,EAAAA,cAAayG,IACtC,IAImCkT,EAJ7B1Y,EACJwF,EAAMxF,KACoCwF,EAAMmM,SACNnM,EAAMoM,MACtC,UAAR5R,GAA2B,KAARA,GACA,QAArB0Y,EAAAR,EAAcnN,eAAO,IAAA2N,GAArBA,EAAuBC,MACzB,GACC,IAEGC,GAAkB7Z,EAAAA,EAAAA,cAAY,KAClCgZ,GAAgB,GAChBE,GAAyB,EAAK,GAC7B,IASH,OAPAtY,EAAAA,EAAAA,YAAU,KACJqY,IACFR,SAAAA,EAAgBI,GAChBK,GAAyB,GAC3B,GACC,CAACL,EAAcJ,EAAeQ,IAG/BlY,IAAAA,cAAA,OACEG,UAAW6U,IAAW,QAAS,CAC7B+D,QAASf,EACTgB,OAAQlB,KAGV9X,IAAAA,cAAA,SACEG,UAAU,cACVgJ,MAAO2O,EACP5S,IAAKkT,EACLa,SAAUP,EACVQ,UAAWP,EACXQ,OAAQL,IAEV9Y,IAAAA,cAAA,OAAKG,UAAU,aAAa8V,cAAeoC,GACxCP,GAIT,CA1FCzB,GAAAc,KAAAlH,GAAAqH,GAAAC,GAAAC,GAAAI,GAAAD,GAAAvO,IAAAkN,GAAAO,GAAAN,MAAAC,EAAAA,EAAAA,GAAAH,GAAA,EAAAlQ,GAAA,YAAAE,GAAA,WAAAE,GAAA,gBAAAkQ,IAAA3M,EAAAA,EAAAA,GAAA2M,EAAApP,IAAA,CAAAoP,EAAAnM,KAAAC,EAAAA,EAAAA,GAAAkM,EAAApP,GAAAiD,IAAA,CAAA9D,GAAA,qBAAAR,IAAA,GAAA0Q,GAAAQ,GAAAP,KAAAC,EAAAA,EAAAA,GAAAF,KA9B2BnO,EAAAA,mBAAgBgO,I,mEClCxC6C,E,MAA0B,GAA4B,KAE1DA,EAAwBtJ,KAAK,CAACuJ,EAAOna,GAAI,0qBAGqY,KAE9a,QAAeka,EAAwBE,U,mECPnCF,E,MAA0B,GAA4B,KAE1DA,EAAwBtJ,KAAK,CAACuJ,EAAOna,GAAI,i6BAGS,KAElD,QAAeka,EAAwBE,U","sources":["webpack:///./src/diagram/NodeComponent.tsx","webpack:///./src/diagram/processors/findNodeBrick.ts","webpack:///./src/diagram/processors/handleKeyboard.ts","webpack:///./src/diagram/constants.ts","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/LineLabelComponent.tsx","webpack:///./src/diagram/index.tsx","webpack:///./src/diagram/processors/getRenderedLinesAndMarkers.ts","webpack:///./src/diagram/processors/matchEdgeByFilter.ts","webpack:///./src/diagram/processors/getCenterOffsets.ts","webpack:///./src/editable-label/index.tsx","webpack:///./src/diagram/styles.shadow.css","webpack:///./src/editable-label/styles.shadow.css"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport type {\n DiagramNode,\n DiagramNodeId,\n NodeBrickConf,\n RefRepository,\n} from \"./interfaces\";\nimport { findNodeBrick } from \"./processors/findNodeBrick\";\n\nexport interface NodeComponentGroupProps {\n nodes?: DiagramNode[];\n nodeBricks?: NodeBrickConf[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function NodeComponentGroup({\n nodes,\n nodeBricks,\n onRendered,\n}: NodeComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<DiagramNodeId[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: DiagramNodeId, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: DiagramNodeId) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!nodes?.some((node) => !renderedIds.includes(node.id)));\n }, [nodes, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {nodes?.map((node) => (\n <div key={node.id} className=\"node\">\n <NodeComponent\n nodeBricks={nodeBricks}\n node={node}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ))}\n </React.Fragment>\n );\n}\n\nexport interface NodeComponentProps {\n node: DiagramNode;\n nodeBricks?: NodeBrickConf[];\n onRendered?: (id: DiagramNodeId, element: HTMLElement | null) => void;\n onUnmount?: (id: DiagramNodeId) => void;\n}\n\nexport function NodeComponent({\n node,\n nodeBricks,\n onRendered,\n onUnmount,\n}: NodeComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => findNodeBrick(node, nodeBricks)?.useBrick,\n [node, nodeBricks]\n );\n const memoizedData = useMemo(() => ({ node }), [node]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }\n }, [node.id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(node.id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(node.id, element);\n });\n }\n },\n [node.id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }, [node.id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport { NodeBrickConf, DiagramNode } from \"../interfaces\";\n\nexport function findNodeBrick(\n node: DiagramNode,\n nodeBricks: NodeBrickConf[] | undefined\n): NodeBrickConf | undefined {\n return nodeBricks?.find((item) => {\n if (item.nodeType) {\n return ([] as unknown[]).concat(item.nodeType).includes(node.type);\n }\n return checkIfByTransform(item, { node });\n });\n}\n","import { minBy } from \"lodash\";\nimport type { DiagramNode, RenderedEdge, RenderedNode } from \"../interfaces\";\n\nexport type KeyboardAction =\n | KeyboardActionSwitchActiveNode\n | KeyboardActionDeleteNode;\n\nexport interface KeyboardActionSwitchActiveNode {\n action: \"switch-active-node\";\n node?: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteNode {\n action: \"delete-node\";\n node: DiagramNode;\n}\n\nexport function handleKeyboard(\n event: KeyboardEvent,\n {\n renderedNodes,\n renderedEdges,\n activeNodeId,\n }: {\n renderedNodes: RenderedNode[];\n renderedEdges: RenderedEdge[];\n activeNodeId: string | undefined;\n }\n): KeyboardAction | undefined {\n const activeNode = activeNodeId\n ? renderedNodes.find((node) => node.id === activeNodeId)\n : undefined;\n\n if (!activeNode) {\n return;\n }\n\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n let action: KeyboardAction[\"action\"] | undefined;\n let node: RenderedNode | undefined;\n switch (key) {\n case \"ArrowLeft\":\n case 37: {\n node = moveOnX(renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowUp\":\n case 38: {\n node = moveOnY(renderedNodes, renderedEdges, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowRight\":\n case 39: {\n node = moveOnX(renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowDown\":\n case 40: {\n node = moveOnY(renderedNodes, renderedEdges, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"Backspace\":\n case 8:\n case \"Delete\":\n case 46: {\n action = \"delete-node\";\n node = activeNode;\n break;\n }\n }\n if (action) {\n event.preventDefault();\n event.stopPropagation();\n return { action, node: node?.data } as KeyboardAction;\n }\n}\n\nfunction moveOnX(\n renderedNodes: RenderedNode[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n let diff: number;\n const candidates = renderedNodes.filter(\n (node) =>\n node !== activeNode &&\n ((diff = (node.x - activeNode.x) * direction), diff > 0) &&\n diff > Math.abs(activeNode.y - node.y)\n );\n return minBy(\n candidates,\n (node) => (activeNode.y - node.y) ** 2 + (activeNode.x - node.x) ** 2\n );\n}\n\nfunction moveOnY(\n renderedNodes: RenderedNode[],\n renderedEdges: RenderedEdge[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n const from = direction === 1 ? \"source\" : \"target\";\n const to = direction === 1 ? \"target\" : \"source\";\n const candidateEdges = renderedEdges.filter(\n ({ data }) => data[from] === activeNode.id && data[to] !== activeNode.id\n );\n const candidates = candidateEdges\n .map(({ data }) => renderedNodes.find((node) => node.id === data[to]))\n .filter(\n (node) => node && (node.y - activeNode.y) * direction > 0\n ) as RenderedNode[];\n return minBy(\n candidates,\n (node) => (activeNode.y - node.y) ** 2 + (activeNode.x - node.x) ** 2\n );\n}\n","export const DEFAULT_LINE_STROKE_COLOR = \"var(--palette-gray-5)\";\nexport const DEFAULT_LINE_STROKE_WIDTH = 1;\nexport const DEFAULT_LINE_CURVE_TYPE = \"curveBasis\";\nexport const DEFAULT_LINE_INTERACT_STROKE_WIDTH = 20;\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition>,\n arrowOffset: number,\n curveType?: CurveType\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveBasis\":\n curveFactory = curveBasis;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveLinear;\n }\n let arrowOffsetX = 0;\n let arrowOffsetY = 0;\n if (arrowOffset) {\n const { x: x0, y: y0 } = points[points.length - 2];\n const { x: x1, y: y1 } = points[points.length - 1];\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = arrowOffset / distance;\n arrowOffsetX = (x0 - x1) * ratio;\n arrowOffsetY = (y0 - y1) * ratio;\n }\n const transformPoints = points;\n const lineFunction = line()\n .x(\n (d, index) =>\n (d as unknown as { x: number }).x -\n (index === points.length - 1 ? arrowOffsetX : 0)\n )\n .y(\n (d, index) =>\n (d as unknown as { y: number }).y -\n (index === points.length - 1 ? arrowOffsetY : 0)\n )\n .curve(curveFactory);\n return lineFunction(transformPoints as unknown as Array<[number, number]>)!;\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineLabelConf,\n PositionTuple,\n RefRepository,\n RenderedLineLabel,\n TextOptions,\n} from \"./interfaces\";\n\nexport interface LineLabelComponentGroupProps {\n labels?: RenderedLineLabel[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function LineLabelComponentGroup({\n labels,\n onRendered,\n}: LineLabelComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<string[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: string) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!labels?.some((label) => !renderedIds.includes(label.id)));\n }, [labels, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {labels?.map(({ text, label, position, id, edge }) =>\n label ? (\n <div\n key={id}\n className=\"line-label\"\n style={{\n left: position[0],\n top: position[1],\n }}\n >\n <LineLabelComponent\n id={id}\n edge={edge}\n label={label}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ) : (\n <LineTextComponent\n key={id}\n id={id}\n text={text!}\n position={position}\n onRendered={handleRenderer}\n />\n )\n )}\n </React.Fragment>\n );\n}\n\nexport interface LineTextComponentProps {\n id: string;\n text: TextOptions;\n position: PositionTuple;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n // onUnmount?: (id: string) => void;\n}\n\nexport function LineTextComponent({\n id,\n text,\n position,\n onRendered /* , onUnmount */,\n}: LineTextComponentProps): JSX.Element {\n const refCallback = useCallback(\n (element: HTMLDivElement) => {\n onRendered?.(id, element);\n },\n [id, onRendered]\n );\n\n return (\n <div\n className=\"line-label\"\n ref={refCallback}\n style={{\n left: position[0],\n top: position[1],\n ...text!.style,\n }}\n >\n {text!.content}\n </div>\n );\n}\n\n// export const LineLabelComponentGroup = React.memo(LegacyLineLabelComponentGroup);\n\nexport interface LineLabelComponentProps {\n id: string;\n edge: DiagramEdge;\n label: LineLabelConf;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n onUnmount?: (id: string) => void;\n}\n\nexport function LineLabelComponent({\n id,\n edge,\n label,\n onRendered,\n onUnmount,\n}: LineLabelComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => (checkIfByTransform(label, { edge }) ? label.useBrick : null),\n [edge, label]\n );\n\n const memoizedData = useMemo(() => ({ edge }), [edge]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }\n }, [id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(id, element.parentElement);\n });\n }\n },\n [id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }, [id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport dagre from \"@dagrejs/dagre\";\nimport { select } from \"d3-selection\";\nimport { zoom } from \"d3-zoom\";\nimport classNames from \"classnames\";\nimport { pick, uniqueId } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptionsDagre,\n LineConf,\n NodeBrickConf,\n PositionTuple,\n RefRepository,\n RenderedEdge,\n RenderedLineLabel,\n RenderedNode,\n LineTextClipPath,\n TransformLiteral,\n LineTarget,\n} from \"./interfaces\";\nimport { NodeComponentGroup } from \"./NodeComponent\";\nimport { handleKeyboard } from \"./processors/handleKeyboard\";\nimport { getCenterOffsets } from \"./processors/getCenterOffsets\";\nimport { getRenderedLinesAndMarkers } from \"./processors/getRenderedLinesAndMarkers\";\nimport styleText from \"./styles.shadow.css\";\nimport { LineLabelComponentGroup } from \"./LineLabelComponent\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface EoDiagramProps {\n layout?: \"dagre\";\n nodes?: DiagramNode[];\n edges?: DiagramEdge[];\n nodeBricks?: NodeBrickConf[];\n lines?: LineConf[];\n layoutOptions?: LayoutOptionsDagre;\n activeNodeId?: string;\n disableKeyboardAction?: boolean;\n}\n\nexport interface DiagramRef {\n callOnLineLabel(id: string, method: string, ...args: unknown[]): void;\n}\n\nexport interface DiagramHandler {\n moveIntoView(id: string): void;\n}\n\nexport const EoDiagramComponent = forwardRef(LegacyEoDiagramComponent);\n\n/**\n * 构件 `eo-diagram`\n */\nexport\n@defineElement(\"eo-diagram\", {\n styleTexts: [styleText],\n})\nclass EoDiagram extends ReactNextElement implements EoDiagramProps {\n /**\n * @required\n */\n @property({ type: String })\n accessor layout: \"dagre\" | undefined;\n\n @property({ attribute: false })\n accessor nodes: DiagramNode[] | undefined;\n\n @property({ attribute: false })\n accessor edges: DiagramEdge[] | undefined;\n\n @property({ attribute: false })\n accessor nodeBricks: NodeBrickConf[] | undefined;\n\n @property({ attribute: false })\n accessor lines: LineConf[] | undefined;\n\n @property({ attribute: false })\n accessor layoutOptions: LayoutOptionsDagre | undefined;\n\n @property({ type: String })\n accessor activeNodeId: string | undefined;\n\n @property({ type: Boolean })\n accessor disableKeyboardAction: boolean | undefined;\n\n @event({ type: \"activeNode.change\" })\n accessor #activeNodeChangeEvent!: EventEmitter<DiagramNode | undefined>;\n\n #handleActiveNodeChange = (node: DiagramNode | undefined) => {\n // this.activeNodeId = node?.id;\n this.#activeNodeChangeEvent.emit(node);\n };\n\n @event({ type: \"node.delete\" })\n accessor #nodeDelete!: EventEmitter<DiagramNode>;\n\n #handleNodeDelete = (node: DiagramNode) => {\n this.#nodeDelete.emit(node);\n };\n\n @event({ type: \"line.dblclick\" })\n accessor #lineDoubleClick!: EventEmitter<LineTarget>;\n\n #handleLineDoubleClick = (line: LineTarget) => {\n this.#lineDoubleClick.emit(line);\n };\n\n #handleSwitchActiveNode = (id: string | undefined) => {\n this.activeNodeId = id;\n };\n\n #diagramRef = createRef<DiagramRef>();\n\n @method()\n callOnLineLabel(id: string, method: string, ...args: unknown[]) {\n this.#diagramRef.current?.callOnLineLabel(id, method, ...args);\n }\n\n render() {\n return (\n <EoDiagramComponent\n ref={this.#diagramRef}\n layout={this.layout}\n nodes={this.nodes}\n edges={this.edges}\n nodeBricks={this.nodeBricks}\n lines={this.lines}\n layoutOptions={this.layoutOptions}\n activeNodeId={this.activeNodeId}\n disableKeyboardAction={this.disableKeyboardAction}\n onActiveNodeChange={this.#handleActiveNodeChange}\n onSwitchActiveNode={this.#handleSwitchActiveNode}\n onNodeDelete={this.#handleNodeDelete}\n onLineDoubleClick={this.#handleLineDoubleClick}\n />\n );\n }\n}\n\nexport interface EoDiagramComponentProps extends EoDiagramProps {\n onActiveNodeChange?(node: DiagramNode | undefined): void;\n onSwitchActiveNode?(id: string | undefined): void;\n onNodeDelete?(node: DiagramNode): void;\n onLineDoubleClick?(line: LineTarget): void;\n}\n\nexport function LegacyEoDiagramComponent(\n {\n layout,\n nodes,\n edges,\n nodeBricks,\n lines,\n layoutOptions,\n activeNodeId,\n disableKeyboardAction,\n onActiveNodeChange,\n onSwitchActiveNode,\n onNodeDelete,\n onLineDoubleClick,\n }: EoDiagramComponentProps,\n ref: React.Ref<DiagramRef>\n) {\n // const [nodePositions, setNodePositions] = useState<Map<DiagramNodeId, NodePosition> | undefined>();\n const [graph, setGraph] = useState<dagre.graphlib.Graph<RenderedNode> | null>(\n null\n );\n const [nodesReady, setNodesReady] = useState(false);\n const [nodesRenderId, setNodesRenderId] = useState(0);\n const [nodesRefRepository, setNodesRefRepository] =\n useState<RefRepository | null>(null);\n // const [lineLabelsReady, setLineLabelsReady] = useState(false);\n const [lineLabelsRenderId, setLineLabelsRenderId] = useState(0);\n const [lineLabelsRefRepository, setLineLabelsRefRepository] =\n useState<RefRepository | null>(null);\n const [renderedNodes, setRenderedNodes] = useState<RenderedNode[]>([]);\n const [renderedEdges, setRenderedEdges] = useState<RenderedEdge[]>([]);\n // const [renderedLines, setRenderedLines] = useState<RenderedLine[]>([]);\n const [renderedLineLabels, setRenderedLineLabels] = useState<\n RenderedLineLabel[]\n >([]);\n // const [markers, setMarkers] = useState<LineMarker[]>([]);\n\n const draggerRef = useRef<HTMLDivElement>(null);\n const [grabbing, setGrabbing] = useState(false);\n const [transform, setTransform] = useState<TransformLiteral>({\n k: 1,\n x: 0,\n y: 0,\n });\n\n const linePathsRef = useRef(new Map<string, SVGPathElement | null>());\n // const lineLabelsRef = useRef(new Map<string, HTMLDivElement | null>());\n\n const rootRef = useRef<HTMLDivElement>(null);\n const nodesRef = useRef<HTMLDivElement>(null);\n const [offsets, setOffsets] = useState<PositionTuple>([0, 0]);\n const [centered, setCentered] = useState(false);\n\n useImperativeHandle(ref, () => ({\n callOnLineLabel(id, method, ...args) {\n (\n lineLabelsRefRepository?.get(id)\n ?.firstElementChild as unknown as Record<string, Function>\n )?.[method](...args);\n },\n }));\n\n const fixedOptions = useMemo(\n () => ({\n rankdir: \"TB\",\n ranksep: 50,\n edgesep: 10,\n nodesep: 50,\n // align: undefined,\n nodePadding: 0,\n ...layoutOptions,\n }),\n [layoutOptions]\n );\n\n const { nodePadding } = fixedOptions;\n const dagreGraphOptions = useMemo(\n () =>\n pick(fixedOptions, [\"rankdir\", \"ranksep\", \"edgesep\", \"nodesep\", \"align\"]),\n [fixedOptions]\n );\n\n useEffect(() => {\n const nextActiveNode = activeNodeId\n ? nodes?.find((node) => node.id === activeNodeId)\n : undefined;\n onActiveNodeChange?.(nextActiveNode);\n }, [nodes, activeNodeId, onActiveNodeChange]);\n\n useEffect(() => {\n setGraph((previousGraph) => {\n // Create a new directed graph\n const newGraph = new dagre.graphlib.Graph<RenderedNode>();\n\n // Set an object for the graph label\n newGraph.setGraph(dagreGraphOptions);\n\n // Default to assigning a new object as a label for each new edge.\n newGraph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.node(node.id);\n newGraph.setNode(\n node.id,\n previousNode?.data === node\n ? previousNode\n : {\n id: node.id,\n data: node,\n }\n );\n }\n\n for (const edge of edges ?? []) {\n newGraph.setEdge(edge.source, edge.target, { data: edge });\n }\n\n return newGraph;\n });\n }, [edges, nodes, dagreGraphOptions]);\n\n useEffect(() => {\n if (!graph || !nodesRefRepository || graph.nodeCount() === 0) {\n return;\n }\n\n for (const id of graph.nodes()) {\n const node = graph.node(id);\n if (!node) {\n // eslint-disable-next-line no-console\n console.error(\"Diagram node not found: %s\", id);\n continue;\n }\n const element = nodesRefRepository.get(id);\n node.width = (element?.offsetWidth ?? 10) + nodePadding * 2;\n node.height = (element?.offsetHeight ?? 10) + nodePadding * 2;\n }\n\n dagre.layout(graph);\n\n // const positions = new Map<DiagramNodeId, NodePosition>();\n const renderedNodes: RenderedNode[] = [];\n\n for (const v of graph.nodes()) {\n const node = graph.node(v);\n if (!node) {\n continue;\n }\n renderedNodes.push(node);\n const x = node.x - node.width / 2 + nodePadding;\n const y = node.y - node.height / 2 + nodePadding;\n // positions.set(v, { x, y });\n\n const nodeContainer = nodesRefRepository.get(v)?.parentElement;\n if (nodeContainer) {\n nodeContainer.style.left = `${x}px`;\n nodeContainer.style.top = `${y}px`;\n nodeContainer.style.visibility = \"visible\";\n }\n }\n\n setRenderedNodes(renderedNodes);\n\n setRenderedEdges(graph.edges().map((e) => graph.edge(e) as RenderedEdge));\n\n // setNodePositions(positions);\n }, [graph, nodesRefRepository, nodesRenderId, nodePadding]);\n\n const { renderedLines, markers } = useMemo(\n () => getRenderedLinesAndMarkers(renderedEdges, lines),\n [lines, renderedEdges]\n );\n\n /* useEffect(() => {\n const { renderedLines, markers } = getRenderedLinesAndMarkers(\n renderedEdges,\n lines\n );\n setRenderedLines(renderedLines);\n setMarkers(markers);\n }, [lines, renderedEdges]); */\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root || disableKeyboardAction) {\n return;\n }\n const onKeydown = (event: KeyboardEvent) => {\n const action = handleKeyboard(event, {\n renderedNodes,\n renderedEdges,\n activeNodeId,\n });\n\n if (action?.action === \"delete-node\") {\n onNodeDelete?.(action.node);\n } else if (action?.action === \"switch-active-node\" && action.node) {\n onSwitchActiveNode?.(action.node.id);\n }\n };\n root.addEventListener(\"keydown\", onKeydown);\n return () => {\n root.removeEventListener(\"keydown\", onKeydown);\n };\n }, [\n activeNodeId,\n renderedNodes,\n renderedEdges,\n disableKeyboardAction,\n onSwitchActiveNode,\n onNodeDelete,\n ]);\n\n const handleNodesRendered = useCallback(\n (refRepository: RefRepository | null) => {\n if (refRepository) {\n setNodesRenderId((previous) => previous + 1);\n setNodesRefRepository(refRepository);\n }\n setNodesReady((previous) => previous || !!refRepository);\n },\n []\n );\n\n const handleLineLabelsRendered = useCallback(\n (refRepository: RefRepository | null) => {\n if (refRepository) {\n setLineLabelsRenderId((previous) => previous + 1);\n setLineLabelsRefRepository(refRepository);\n }\n // setLineLabelsReady((previous) => previous || !!refRepository);\n },\n []\n );\n\n useEffect(() => {\n const root = rootRef.current;\n const dragger = draggerRef.current as Element;\n if (!root || !dragger) {\n return;\n }\n let moved = false;\n const zoomer = zoom()\n .scaleExtent([1, 1])\n .on(\"start\", () => {\n moved = false;\n setGrabbing(true);\n })\n .on(\"zoom\", (e) => {\n moved = true;\n setTransform(e.transform);\n })\n .on(\"end\", () => {\n setGrabbing(false);\n if (!moved) {\n onSwitchActiveNode?.(undefined);\n }\n });\n select(dragger).call(zoomer);\n\n select(root).on(\"wheel.zoom\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n zoomer.translateBy(select(dragger), e.wheelDeltaX / 5, e.wheelDeltaY / 5);\n });\n }, [onSwitchActiveNode]);\n\n useEffect(() => {\n const root = rootRef.current;\n if (renderedNodes.length === 0 || !root || centered) {\n return;\n }\n setOffsets(\n getCenterOffsets(renderedNodes, [root.clientWidth, root.clientHeight])\n );\n setCentered(true);\n }, [centered, renderedNodes]);\n\n const defPrefix = useMemo(() => `${uniqueId(\"diagram-\")}-`, []);\n const markerPrefix = `${defPrefix}line-arrow-`;\n const clipPathPrefix = `${defPrefix}clip-path-`;\n\n useEffect(() => {\n setRenderedLineLabels((previous) =>\n previous.length === 0 && renderedLines.length === 0\n ? previous\n : (renderedLines\n .map(({ line: { text, label, $id }, edge }) => {\n const path = linePathsRef.current.get($id);\n if ((!text && !label) || !path || !path.getAttribute(\"d\")) {\n return;\n }\n\n // istanbul ignore next\n const { x, y, width, height } =\n process.env.NODE_ENV === \"test\"\n ? { x: 10, y: 20, width: 300, height: 400 }\n : path.getBBox();\n // Make redundant extra padding.\n const padding = 1000;\n const left = x - padding;\n const top = y - padding;\n const right = x + width + padding;\n const bottom = y + height + padding;\n\n // istanbul ignore next\n const point =\n process.env.NODE_ENV === \"test\"\n ? { x: 50, y: 50 }\n : path.getPointAtLength(path.getTotalLength() / 2);\n return {\n text,\n label,\n edge,\n position: [point.x, point.y],\n lineRect: { left, top, right, bottom },\n id: $id,\n };\n })\n .filter(Boolean) as RenderedLineLabel[])\n );\n }, [renderedLines]);\n\n const [clipPathList, setClipPathList] = React.useState<LineTextClipPath[]>(\n []\n );\n\n useEffect(() => {\n if (!lineLabelsRefRepository) {\n return;\n }\n setClipPathList(\n renderedLineLabels\n .map(({ id }) => {\n const element = lineLabelsRefRepository?.get(id);\n if (!element) {\n return;\n }\n const { offsetWidth, offsetHeight } = element;\n // Do not clip when the label takes no space.\n if (\n process.env.NODE_ENV !== \"test\" &&\n (offsetWidth === 0 || offsetHeight === 0)\n ) {\n return;\n }\n const padding = 3;\n return {\n x0: element.offsetLeft - offsetWidth / 2 - padding,\n y0: element.offsetTop - offsetHeight / 2 - padding,\n w: offsetWidth + padding * 2,\n h: offsetHeight + padding * 2,\n id,\n };\n })\n .filter(Boolean) as LineTextClipPath[]\n );\n }, [lineLabelsRenderId, lineLabelsRefRepository, renderedLineLabels]);\n\n if (layout !== \"dagre\") {\n return <div>{`Diagram layout not supported: \"${layout}\"`}</div>;\n }\n\n return (\n <div\n className={classNames(\"diagram\", { ready: nodesReady && centered })}\n tabIndex={-1}\n ref={rootRef}\n >\n <div className={classNames(\"dragger\", { grabbing })} ref={draggerRef} />\n <svg width=\"100%\" height=\"100%\" className=\"lines\">\n <defs>\n {markers.map(({ strokeColor }, index) => (\n <marker\n key={index}\n id={`${markerPrefix}${index}`}\n viewBox=\"0 0 6 6\"\n refX={3}\n refY={3}\n markerWidth={6}\n markerHeight={6}\n orient=\"auto\"\n >\n <path\n d=\"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z\"\n stroke={strokeColor}\n strokeWidth={1}\n fill={strokeColor}\n />\n </marker>\n ))}\n {clipPathList.map(({ x0, y0, w, h, id }) => {\n const lineText = renderedLineLabels.find((item) => item.id === id);\n if (!lineText) {\n return;\n }\n const { left, top, right, bottom } = lineText.lineRect;\n // https://css-tricks.com/cutting-inner-part-element-using-clip-path/\n return (\n <clipPath key={id} id={`${clipPathPrefix}${id}`}>\n <polygon\n points={[\n `${x0},${y0 + h}`,\n `${x0 + w},${y0 + h}`,\n `${x0 + w},${y0}`,\n `${x0},${y0}`,\n `${x0},${top}`,\n `${right},${top}`,\n `${right},${bottom}`,\n `${left},${bottom}`,\n `${left},${top}`,\n `${x0},${top}`,\n ].join(\" \")}\n />\n </clipPath>\n );\n })}\n </defs>\n <g\n transform={`translate(${offsets[0] + transform.x} ${\n offsets[1] + transform.y\n }) scale(${transform.k})`}\n >\n {renderedLines.map(({ line, d, markerIndex, edge }) => (\n <g\n className={classNames(\"line\", {\n interactable: line.interactable,\n })}\n key={line.$id}\n onDoubleClick={\n line.interactable\n ? (e) => (\n e.preventDefault(),\n e.stopPropagation(),\n onLineDoubleClick?.({ id: line.$id, edge: edge })\n )\n : undefined\n }\n >\n <path\n ref={(element) => linePathsRef.current.set(line.$id, element)}\n stroke={line.strokeColor}\n strokeWidth={line.strokeWidth}\n d={d}\n fill=\"none\"\n markerEnd={\n markerIndex === undefined\n ? undefined\n : `url(#${markerPrefix}${markerIndex})`\n }\n clipPath={\n clipPathList.some((clip) => clip.id === line.$id)\n ? `url(#${clipPathPrefix}${line.$id})`\n : undefined\n }\n />\n {line.interactable && (\n <path\n // This `path` is made for expanding interaction area of graph lines.\n // 保证此path在svg上层,从而扩大触发区域\n d={d}\n fill=\"none\"\n stroke=\"transparent\"\n strokeWidth={line.interactStrokeWidth ?? 5}\n />\n )}\n </g>\n ))}\n </g>\n </svg>\n <div\n className=\"line-labels\"\n style={{\n left: offsets[0] + transform.x,\n top: offsets[1] + transform.y,\n }}\n >\n <LineLabelComponentGroup\n labels={renderedLineLabels}\n onRendered={handleLineLabelsRendered}\n />\n </div>\n <div\n className=\"nodes\"\n ref={nodesRef}\n style={{\n left: offsets[0] + transform.x,\n top: offsets[1] + transform.y,\n }}\n >\n <NodeComponentGroup\n nodes={nodes}\n nodeBricks={nodeBricks}\n // nodePositions={nodePositions}\n onRendered={handleNodesRendered}\n />\n </div>\n </div>\n );\n}\n","import { findIndex, uniqueId } from \"lodash\";\nimport { __secret_internals } from \"@next-core/runtime\";\nimport type {\n LineConf,\n LineMarker,\n RenderedEdge,\n RenderedLine,\n} from \"../interfaces\";\nimport { matchEdgeByFilter } from \"./matchEdgeByFilter\";\nimport {\n DEFAULT_LINE_CURVE_TYPE,\n DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\nimport { curveLine } from \"../lines/curveLine\";\n\nexport function getRenderedLinesAndMarkers(\n renderedEdges: RenderedEdge[],\n lines: LineConf[] | undefined\n) {\n const renderedLines: RenderedLine[] = [];\n const markers: LineMarker[] = [];\n for (const { data, points } of renderedEdges) {\n const { label, ...restLineConf } =\n lines?.find((line) => matchEdgeByFilter(data, line)) ?? {};\n\n const computedLineConf = __secret_internals.legacyDoTransform(\n { edge: data },\n restLineConf\n ) as LineConf | undefined;\n if (computedLineConf?.draw === false) {\n continue;\n }\n const line: RenderedLine[\"line\"] = {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n curveType: DEFAULT_LINE_CURVE_TYPE,\n interactStrokeWidth: DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n ...computedLineConf,\n label,\n $id: uniqueId(\"line-\"),\n };\n\n let markerIndex: number | undefined;\n if (line.arrow) {\n const marker: LineMarker = {\n strokeColor: line.strokeColor,\n };\n markerIndex = findIndex(markers, marker);\n if (markerIndex === -1) {\n markerIndex = markers.push(marker) - 1;\n }\n }\n\n const d = curveLine(points, line.arrow ? -5 : 0, line.curveType);\n\n renderedLines.push({\n line,\n d,\n markerIndex,\n edge: data,\n });\n }\n return {\n renderedLines,\n markers,\n };\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport type { DiagramEdge, LineConf } from \"../interfaces\";\n\nexport function matchEdgeByFilter(\n edge: DiagramEdge,\n filter: LineConf\n): boolean {\n if (!filter) {\n return false;\n }\n if (filter.edgeType) {\n return ([] as string[]).concat(filter.edgeType).includes(edge.type!);\n }\n return checkIfByTransform(filter, { edge });\n}\n","import type { RenderedNode } from \"../interfaces\";\n\nexport function getCenterOffsets(\n renderedNodes: RenderedNode[],\n [canvasWidth, canvasHeight]: [canvasWidth: number, canvasHeight: number]\n): [offsetX: number, offsetY: number] {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const node of renderedNodes) {\n const hw = node.width / 2;\n const hh = node.height / 2;\n const l = node.x - hw;\n const r = node.x + hw;\n const t = node.y - hh;\n const b = node.y + hh;\n if (l < left) {\n left = l;\n }\n if (r > right) {\n right = r;\n }\n if (t < top) {\n top = t;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const width = right - left;\n const height = bottom - top;\n\n return [(canvasWidth - width) / 2 - top, (canvasHeight - height) / 2 - left];\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface EditableLabelProps {\n label?: string;\n type?: LabelType;\n}\n\nexport type LabelType = \"line\" | \"default\";\n\nexport interface EditableLabelRef {\n enableEditing(): void;\n}\n\nexport const EditableLabelComponent = forwardRef(LegacyEditableLabelComponent);\n\n/**\n * 构件 `diagram.editable-label`\n */\nexport\n@defineElement(\"diagram.editable-label\", {\n styleTexts: [styleText],\n})\nclass EditableLabel extends ReactNextElement implements EditableLabelProps {\n @property()\n accessor label: string | undefined;\n\n @property({ render: false })\n accessor type: LabelType | undefined;\n\n @event({ type: \"label.change\" })\n accessor #labelChange!: EventEmitter<string>;\n\n #handleLabelChange = (value: string) => {\n this.#labelChange.emit(value);\n };\n\n @method()\n enableEditing() {\n this.#editableLabelRef.current?.enableEditing();\n }\n\n #editableLabelRef = createRef<EditableLabelRef>();\n\n render() {\n return (\n <EditableLabelComponent\n ref={this.#editableLabelRef}\n label={this.label}\n onLabelChange={this.#handleLabelChange}\n />\n );\n }\n}\n\nexport interface EditableLabelComponentProps extends EditableLabelProps {\n onLabelChange?(value: string): void;\n}\n\nexport function LegacyEditableLabelComponent(\n { label: _label, onLabelChange }: EditableLabelComponentProps,\n ref: React.Ref<EditableLabelRef>\n) {\n const label = _label ?? \"\";\n const [currentLabel, setCurrentLabel] = useState<string>(label);\n const [editingLabel, setEditingLabel] = useState(false);\n const [shouldEmitLabelChange, setShouldEmitLabelChange] = useState(false);\n const labelInputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => ({\n enableEditing() {\n setEditingLabel(true);\n },\n }));\n\n useEffect(() => {\n setCurrentLabel(label);\n }, [label]);\n\n const handleEditLabel = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setEditingLabel(true);\n }, []);\n\n useEffect(() => {\n if (editingLabel) {\n // Prevent scroll when focusing.\n // Otherwise the diagram svg may be clipped in Chrome.\n labelInputRef.current?.focus({ preventScroll: true });\n labelInputRef.current?.select();\n }\n }, [editingLabel]);\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentLabel(event.target.value);\n },\n []\n );\n\n const handleInputKeydown = useCallback((event: React.KeyboardEvent) => {\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n if (key === \"Enter\" || key === 13) {\n labelInputRef.current?.blur();\n }\n }, []);\n\n const handleInputBlur = useCallback(() => {\n setEditingLabel(false);\n setShouldEmitLabelChange(true);\n }, []);\n\n useEffect(() => {\n if (shouldEmitLabelChange) {\n onLabelChange?.(currentLabel);\n setShouldEmitLabelChange(false);\n }\n }, [currentLabel, onLabelChange, shouldEmitLabelChange]);\n\n return (\n <div\n className={classNames(\"label\", {\n editing: editingLabel,\n empty: !currentLabel,\n })}\n >\n <input\n className=\"label-input\"\n value={currentLabel}\n ref={labelInputRef}\n onChange={handleInputChange}\n onKeyDown={handleInputKeydown}\n onBlur={handleInputBlur}\n />\n <div className=\"label-text\" onDoubleClick={handleEditLabel}>\n {currentLabel}\n </div>\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.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}.ready{opacity:1}.dragger,\n.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.node{position:absolute;visibility:hidden}.dragger{width:100%;height:100%;cursor:-webkit-grab;cursor:grab}.grabbing{cursor:-webkit-grabbing;cursor:grabbing}.line-label{position:absolute;transform:translate(-50%,-50%);white-space:pre-line;width:-webkit-max-content;width:-moz-max-content;width:max-content;text-align:center}.lines{pointer-events:none}.line.interactable{pointer-events:auto}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-label-line-height:inherit;--local-label-font-size:inherit;--local-label-color:inherit;--local-label-font-weight:inherit}:host([hidden]){display:none}:host([type=\"line\"]){--local-label-line-height:18px;--local-label-font-size:11px;--local-label-color:var(--color-secondary-text);--local-label-font-weight:400}*{box-sizing:border-box}.label{max-width:168px;margin:-3px}.label-text,\n.label-input{width:100%;height:24px;padding:3px;border:none;line-height:var(--local-label-line-height);font-size:var(--local-label-font-size);color:var(--local-label-color);font-weight:var(--local-label-font-weight);text-align:center;font-family:inherit;cursor:text;-webkit-user-select:text;-moz-user-select:text;user-select:text}.label-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.label.editing .label-text,\n.label.empty:not(.editing) .label-text,\n.label:not(.editing) .label-input{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["NodeComponentGroup","_ref","nodes","nodeBricks","onRendered","rendered","setRendered","useState","renderedIds","setRenderedIds","refRepository","useMemo","Map","handleRenderer","useCallback","id","element","set","previous","includes","concat","handleUnmount","index","indexOf","slice","delete","useEffect","some","node","React","map","key","className","NodeComponent","onUnmount","_ref2","useBrick","_findNodeBrick","find","item","nodeType","type","checkIfByTransform","findNodeBrick","memoizedData","setTimeout","refCallback","ignoredCallback","ReactUseBrick","data","moveOnX","renderedNodes","activeNode","direction","diff","candidates","filter","x","Math","abs","y","minBy","moveOnY","renderedEdges","from","to","_ref3","DEFAULT_LINE_STROKE_COLOR","DEFAULT_LINE_STROKE_WIDTH","DEFAULT_LINE_CURVE_TYPE","DEFAULT_LINE_INTERACT_STROKE_WIDTH","curveLine","points","arrowOffset","curveType","Array","isArray","curveFactory","curveBasis","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveLinear","arrowOffsetX","arrowOffsetY","x0","y0","length","x1","y1","ratio","sqrt","pow","transformPoints","line","d","curve","lineFunction","LineLabelComponentGroup","labels","label","text","position","edge","style","left","top","LineLabelComponent","LineTextComponent","ref","_objectSpread","content","_ref4","parentElement","_EoDiagram","defineElement","property","event","method","createDecorators","EoDiagramComponent","forwardRef","LegacyEoDiagramComponent","_dec","styleTexts","styleText","_dec2","String","_dec3","attribute","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","Boolean","_dec10","_dec11","_dec12","_dec13","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_activeNodeChangeEvent","_handleActiveNodeChange","_J","_nodeDelete","_handleNodeDelete","_K","_lineDoubleClick","_handleLineDoubleClick","_handleSwitchActiveNode","_diagramRef","EoDiagram","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","get","_get_lineDoubleClick2","_set_lineDoubleClick2","_get_nodeDelete2","_set_nodeDelete2","_get_activeNodeChangeEvent2","_set_activeNodeChangeEvent2","writable","value","_initProto","_init_layout","_init_nodes","_init_edges","_init_nodeBricks","_init_lines","_init_layoutOptions","_init_activeNodeId","_init_disableKeyboardAction","_init_activeNodeChangeEvent","_classPrivateFieldGet","this","emit","_init_nodeDelete","_init_lineDoubleClick","activeNodeId","createRef","layout","v","_classPrivateFieldSet","edges","lines","layoutOptions","disableKeyboardAction","callOnLineLabel","_classPrivateFieldGet2","_len","args","_key","current","render","onActiveNodeChange","onSwitchActiveNode","onNodeDelete","onLineDoubleClick","_set_activeNodeChangeEvent","_get_activeNodeChangeEvent","_set_nodeDelete","_get_nodeDelete","_set_lineDoubleClick","_get_lineDoubleClick","graph","setGraph","nodesReady","setNodesReady","nodesRenderId","setNodesRenderId","nodesRefRepository","setNodesRefRepository","lineLabelsRenderId","setLineLabelsRenderId","lineLabelsRefRepository","setLineLabelsRefRepository","setRenderedNodes","setRenderedEdges","renderedLineLabels","setRenderedLineLabels","draggerRef","useRef","grabbing","setGrabbing","transform","setTransform","k","linePathsRef","rootRef","nodesRef","offsets","setOffsets","centered","setCentered","useImperativeHandle","_lineLabelsRefReposit","_len2","_key2","firstElementChild","fixedOptions","rankdir","ranksep","edgesep","nodesep","nodePadding","dagreGraphOptions","pick","nextActiveNode","undefined","previousGraph","newGraph","dagre","Graph","setDefaultEdgeLabel","previousNode","setNode","setEdge","source","target","nodeCount","_element$offsetWidth","_element$offsetHeight","width","offsetWidth","height","offsetHeight","console","error","_nodesRefRepository$g","push","nodeContainer","visibility","e","renderedLines","markers","_loop","_lines$find","matchEdgeByFilter","edgeType","restLineConf","_objectWithoutProperties","_excluded","computedLineConf","__secret_internals","legacyDoTransform","draw","markerIndex","strokeColor","strokeWidth","interactStrokeWidth","$id","uniqueId","arrow","marker","findIndex","getRenderedLinesAndMarkers","root","onKeydown","action","_node","keyCode","which","preventDefault","stopPropagation","handleKeyboard","addEventListener","removeEventListener","handleNodesRendered","handleLineLabelsRendered","dragger","moved","zoomer","zoom","scaleExtent","on","select","call","translateBy","wheelDeltaX","wheelDeltaY","canvasWidth","canvasHeight","Infinity","right","bottom","hw","hh","l","r","t","b","getCenterOffsets","clientWidth","clientHeight","defPrefix","markerPrefix","clipPathPrefix","path","getAttribute","getBBox","padding","point","getPointAtLength","getTotalLength","lineRect","clipPathList","setClipPathList","offsetLeft","offsetTop","w","h","classNames","ready","tabIndex","viewBox","refX","refY","markerWidth","markerHeight","orient","stroke","fill","_ref5","lineText","join","_ref6","_line$interactStrokeW","interactable","onDoubleClick","markerEnd","clipPath","clip","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS","_EditableLabel","EditableLabelComponent","LegacyEditableLabelComponent","_labelChange","_handleLabelChange","_editableLabelRef","EditableLabel","_get_labelChange2","_set_labelChange2","_init_label","_init_type","_init_labelChange","enableEditing","onLabelChange","_set_labelChange","_get_labelChange","_label","currentLabel","setCurrentLabel","editingLabel","setEditingLabel","shouldEmitLabelChange","setShouldEmitLabelChange","labelInputRef","handleEditLabel","_labelInputRef$curren","_labelInputRef$curren2","focus","preventScroll","handleInputChange","handleInputKeydown","_labelInputRef$curren3","blur","handleInputBlur","editing","empty","onChange","onKeyDown","onBlur","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
|