@next-bricks/diagram 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/eo-diagram.eecac144.js","mappings":"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","sources":["webpack:///./src/diagram/NodeComponent.tsx","webpack:///./src/diagram/constants.ts","webpack:///./src/diagram/index.tsx","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/processors/findNodeBrick.ts","webpack:///./src/diagram/processors/getCenterOffsets.ts","webpack:///./src/diagram/processors/getRenderedLinesAndMarkers.ts","webpack:///./src/diagram/processors/handleKeyboard.ts","webpack:///./src/diagram/processors/matchEdgeByFilter.ts","webpack:///./src/diagram/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","export const DEFAULT_LINE_STROKE_COLOR = \"var(--palette-gray-5)\";\nexport const DEFAULT_LINE_STROKE_WIDTH = 1;\nexport const DEFAULT_LINE_CURVE_TYPE = \"curveBasis\";\n","import React, {\n useCallback,\n useEffect,\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 type {\n DiagramEdge,\n DiagramNode,\n LayoutOptionsDagre,\n LineConf,\n LineMarker,\n NodeBrickConf,\n RefRepository,\n RenderedEdge,\n RenderedLine,\n RenderedNode,\n TransformLiteral,\n} from \"./interfaces\";\nimport { NodeComponentGroup } from \"./NodeComponent\";\nimport { curveLine } from \"./lines/curveLine\";\nimport { handleKeyboard } from \"./processors/handleKeyboard\";\nimport { getCenterOffsets } from \"./processors/getCenterOffsets\";\nimport { getRenderedLinesAndMarkers } from \"./processors/getRenderedLinesAndMarkers\";\nimport styleText from \"./styles.shadow.css\";\nimport { uniqueId } from \"lodash\";\n\nconst { defineElement, property, event } = 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 onActiveNodeChange?(node: DiagramNode | undefined): void;\n onSwitchActiveNode?(id: string | undefined): void;\n onNodeDelete?(node: DiagramNode): void;\n}\n\nexport interface DiagramHandler {\n moveIntoView(id: string): void;\n}\n\n/**\n * 构件 `eo-diagram`\n */\nexport\n@defineElement(\"eo-diagram\", {\n styleTexts: [styleText],\n // shadowOptions: false\n})\nclass EoDiagram extends ReactNextElement implements EoDiagramProps {\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 #handleSwitchActiveNode = (id: string | undefined) => {\n this.activeNodeId = id;\n };\n\n render() {\n return (\n <EoDiagramComponent\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 />\n );\n }\n}\n\nexport function EoDiagramComponent({\n layout,\n nodes,\n edges,\n nodeBricks,\n lines,\n layoutOptions,\n activeNodeId,\n disableKeyboardAction,\n onActiveNodeChange,\n onSwitchActiveNode,\n onNodeDelete,\n}: EoDiagramProps) {\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 [renderId, setRenderId] = useState(0);\n const [refRepository, setRefRepository] = useState<RefRepository | null>(\n null\n );\n const [renderedNodes, setRenderedNodes] = useState<RenderedNode[]>([]);\n const [renderedEdges, setRenderedEdges] = useState<RenderedEdge[]>([]);\n const [renderedLines, setRenderedLines] = useState<RenderedLine[]>([]);\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 rootRef = useRef<HTMLDivElement>(null);\n const nodesRef = useRef<HTMLDivElement>(null);\n const [offsets, setOffsets] = useState<[x: number, y: number]>([0, 0]);\n const [centered, setCentered] = useState(false);\n\n const nodePadding = layoutOptions?.nodePadding ?? 0;\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({\n ranksep: 50,\n nodesep: 20,\n // padding: 15,\n rankdir: \"TB\",\n // acyclicer: \"greedy\",\n });\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]);\n\n useEffect(() => {\n if (!graph || !refRepository || 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 = refRepository.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 = refRepository.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, refRepository, renderId, nodePadding]);\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 setRenderId((previous) => previous + 1);\n setRefRepository(refRepository);\n }\n setNodesReady((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 markerPrefix = useMemo(() => `${uniqueId(\"diagram-line-arrow-\")}-`, []);\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 <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 </defs>\n <g\n transform={`translate(${offsets[0] + transform.x} ${\n offsets[1] + transform.y\n }) scale(${transform.k})`}\n >\n {renderedLines.map(({ points, line, markerIndex }, index) => (\n <path\n key={index}\n stroke={line.strokeColor}\n strokeWidth={line.strokeWidth}\n d={curveLine(points, line.arrow ? -5 : 0, line.curveType)}\n fill=\"none\"\n markerEnd={\n markerIndex === undefined\n ? undefined\n : `url(#${markerPrefix}${markerIndex})`\n }\n />\n ))}\n </g>\n </svg>\n <div className={classNames(\"dragger\", { grabbing })} ref={draggerRef} />\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 {\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 { 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 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 { findIndex } from \"lodash\";\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_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\n\nexport function getRenderedLinesAndMarkers(\n renderedEdges: RenderedEdge[],\n lines: LineConf[] | undefined\n) {\n const renderedLines: RenderedLine[] = [];\n const markers: LineMarker[] = [];\n for (const renderedEdge of renderedEdges) {\n const lineConf = lines?.find((line) =>\n matchEdgeByFilter(renderedEdge.data, line)\n );\n if (lineConf?.draw === false) {\n continue;\n }\n const line: RenderedLine[\"line\"] = Object.assign(\n {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n curveType: DEFAULT_LINE_CURVE_TYPE,\n },\n lineConf\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 renderedLines.push({\n ...renderedEdge,\n line,\n markerIndex,\n });\n }\n return {\n renderedLines,\n markers,\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","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","// 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.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}`, \"\"]);\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","findNodeBrick","memoizedData","setTimeout","refCallback","ignoredCallback","ReactUseBrick","data","DEFAULT_LINE_STROKE_COLOR","DEFAULT_LINE_STROKE_WIDTH","DEFAULT_LINE_CURVE_TYPE","_EoDiagram","defineElement","property","event","createDecorators","_dec","styleTexts","styleText","_dec2","type","String","_dec3","attribute","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","Boolean","_dec10","_dec11","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_activeNodeChangeEvent","_handleActiveNodeChange","_J","_nodeDelete","_handleNodeDelete","_handleSwitchActiveNode","EoDiagram","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","get","_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","activeNodeId","layout","v","_classPrivateFieldSet","edges","lines","layoutOptions","disableKeyboardAction","render","EoDiagramComponent","onActiveNodeChange","onSwitchActiveNode","onNodeDelete","_set_activeNodeChangeEvent","_get_activeNodeChangeEvent","_set_nodeDelete","_get_nodeDelete","_layoutOptions$nodePa","graph","setGraph","nodesReady","setNodesReady","renderId","setRenderId","setRefRepository","renderedNodes","setRenderedNodes","renderedEdges","setRenderedEdges","renderedLines","setRenderedLines","markers","setMarkers","draggerRef","useRef","grabbing","setGrabbing","transform","setTransform","k","x","y","rootRef","nodesRef","offsets","setOffsets","centered","setCentered","nodePadding","nextActiveNode","find","undefined","previousGraph","newGraph","dagre","Graph","ranksep","nodesep","rankdir","setDefaultEdgeLabel","previousNode","setNode","edge","setEdge","source","target","nodeCount","_element$offsetWidth","_element$offsetHeight","width","offsetWidth","height","offsetHeight","console","error","_refRepository$get","push","nodeContainer","parentElement","style","left","top","visibility","e","getRenderedLinesAndMarkers","root","current","onKeydown","action","handleKeyboard","addEventListener","removeEventListener","handleNodesRendered","dragger","moved","zoomer","zoom","scaleExtent","on","select","call","stopPropagation","preventDefault","translateBy","wheelDeltaX","wheelDeltaY","length","getCenterOffsets","clientWidth","clientHeight","markerPrefix","uniqueId","classNames","ready","tabIndex","ref","strokeColor","viewBox","refX","refY","markerWidth","markerHeight","orient","d","stroke","strokeWidth","fill","_ref3","points","line","markerIndex","curveLine","arrow","curveType","markerEnd","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS","arrowOffset","Array","isArray","curveFactory","curveBasis","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveLinear","arrowOffsetX","arrowOffsetY","x0","y0","x1","y1","ratio","Math","sqrt","pow","transformPoints","curve","lineFunction","item","nodeType","checkIfByTransform","canvasWidth","canvasHeight","Infinity","right","bottom","hw","hh","l","r","t","b","_loop","renderedEdge","lineConf","matchEdgeByFilter","draw","Object","assign","marker","findIndex","_objectSpread","activeNode","_node","keyCode","which","moveOnX","moveOnY","direction","diff","candidates","filter","abs","minBy","from","to","edgeType","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}