@next-bricks/diagram 0.3.0 → 0.4.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.639ed2b0.js","mappings":"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","sources":["webpack:///./src/diagram/LineLabelComponent.tsx","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 { 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, { 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 { 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} 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 { LineLabelComponentGroup } from \"./LineLabelComponent\";\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})\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 #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 [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 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 }, data: 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 <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(({ points, line, markerIndex }) => (\n <path\n ref={(element) => linePathsRef.current.set(line.$id, element)}\n key={line.$id}\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 clipPath={\n clipPathList.some((clip) => clip.id === line.$id)\n ? `url(#${clipPathPrefix}${line.$id})`\n : undefined\n }\n />\n ))}\n </g>\n </svg>\n <div className={classNames(\"dragger\", { grabbing })} ref={draggerRef} />\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 {\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, uniqueId } 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\";\nimport { __secret_internals } from \"@next-core/runtime\";\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 { label, ...restLineConf } =\n lines?.find((line) => matchEdgeByFilter(renderedEdge.data, line)) ?? {};\n\n const computedLineConf = __secret_internals.legacyDoTransform(\n { edge: renderedEdge.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 ...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 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.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}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["LineLabelComponentGroup","_ref","labels","onRendered","rendered","setRendered","useState","renderedIds","setRenderedIds","refRepository","useMemo","Map","handleRenderer","useCallback","id","element","set","previous","includes","concat","handleUnmount","index","indexOf","slice","delete","useEffect","some","label","React","map","_ref2","text","position","edge","key","className","style","left","top","LineLabelComponent","onUnmount","LineTextComponent","_ref3","refCallback","ref","_objectSpread","content","_ref4","useBrick","checkIfByTransform","memoizedData","setTimeout","parentElement","ignoredCallback","ReactUseBrick","data","NodeComponentGroup","nodes","nodeBricks","node","NodeComponent","_findNodeBrick","findNodeBrick","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","graph","setGraph","nodesReady","setNodesReady","nodesRenderId","setNodesRenderId","nodesRefRepository","setNodesRefRepository","lineLabelsRenderId","setLineLabelsRenderId","lineLabelsRefRepository","setLineLabelsRefRepository","renderedNodes","setRenderedNodes","renderedEdges","setRenderedEdges","renderedLineLabels","setRenderedLineLabels","draggerRef","useRef","grabbing","setGrabbing","transform","setTransform","k","x","y","linePathsRef","rootRef","nodesRef","offsets","setOffsets","centered","setCentered","fixedOptions","rankdir","ranksep","edgesep","nodesep","nodePadding","dagreGraphOptions","pick","nextActiveNode","find","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","getRenderedLinesAndMarkers","root","current","onKeydown","action","handleKeyboard","addEventListener","removeEventListener","handleNodesRendered","handleLineLabelsRendered","dragger","moved","zoomer","zoom","scaleExtent","on","select","call","stopPropagation","preventDefault","translateBy","wheelDeltaX","wheelDeltaY","length","getCenterOffsets","clientWidth","clientHeight","defPrefix","uniqueId","markerPrefix","clipPathPrefix","line","$id","path","getAttribute","getBBox","padding","right","bottom","point","getPointAtLength","getTotalLength","lineRect","filter","clipPathList","setClipPathList","x0","offsetLeft","y0","offsetTop","w","h","classNames","ready","tabIndex","strokeColor","viewBox","refX","refY","markerWidth","markerHeight","orient","d","stroke","strokeWidth","fill","_ref5","lineText","item","points","join","_ref6","markerIndex","curveLine","arrow","curveType","markerEnd","clipPath","clip","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS","arrowOffset","Array","isArray","curveFactory","curveBasis","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveLinear","arrowOffsetX","arrowOffsetY","x1","y1","ratio","Math","sqrt","pow","transformPoints","curve","lineFunction","nodeType","canvasWidth","canvasHeight","Infinity","hw","hh","l","r","t","b","_loop","renderedEdge","_lines$find","matchEdgeByFilter","restLineConf","_objectWithoutProperties","_excluded","computedLineConf","__secret_internals","legacyDoTransform","draw","marker","findIndex","activeNode","_node","keyCode","which","moveOnX","moveOnY","direction","diff","candidates","abs","minBy","from","to","edgeType","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}