@next-bricks/diagram 0.4.1 → 0.5.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.
Files changed (38) hide show
  1. package/dist/bricks.json +1 -1
  2. package/dist/chunks/2624.011771ea.js +2 -0
  3. package/dist/chunks/2624.011771ea.js.map +1 -0
  4. package/dist/chunks/{7312.73a6c3bb.js → 7312.3688d673.js} +3 -3
  5. package/dist/chunks/{7312.73a6c3bb.js.map → 7312.3688d673.js.map} +1 -1
  6. package/dist/chunks/9393.f495fc69.js +2 -0
  7. package/dist/chunks/9393.f495fc69.js.map +1 -0
  8. package/dist/chunks/eo-diagram.9a3dc4a2.js +2 -0
  9. package/dist/chunks/eo-diagram.9a3dc4a2.js.map +1 -0
  10. package/dist/chunks/main.568ac27d.js +2 -0
  11. package/dist/chunks/{main.cc81c286.js.map → main.568ac27d.js.map} +1 -1
  12. package/dist/examples.json +1 -1
  13. package/dist/index.d1cc256a.js +2 -0
  14. package/dist/{index.cf4aa49d.js.map → index.d1cc256a.js.map} +1 -1
  15. package/dist/manifest.json +11 -0
  16. package/dist/types.json +188 -0
  17. package/dist-types/diagram/ClipPathComponent.d.ts +8 -0
  18. package/dist-types/diagram/ConnectLineComponent.d.ts +8 -0
  19. package/dist-types/diagram/LineComponent.d.ts +11 -0
  20. package/dist-types/diagram/MarkerComponent.d.ts +6 -0
  21. package/dist-types/diagram/index.d.ts +5 -2
  22. package/dist-types/diagram/interfaces.d.ts +18 -1
  23. package/dist-types/diagram/processors/getCenterOffsets.d.ts +2 -2
  24. package/dist-types/diagram/processors/getClipPathList.d.ts +2 -0
  25. package/dist-types/diagram/processors/getDagreGraph.d.ts +3 -0
  26. package/dist-types/diagram/processors/getRenderedDiagram.d.ts +11 -0
  27. package/dist-types/diagram/processors/getRenderedLineLabels.d.ts +2 -0
  28. package/dist-types/diagram/processors/handleDiagramMouseDown.d.ts +11 -0
  29. package/dist-types/diagram/processors/handleDiagramMouseDown.spec.d.ts +1 -0
  30. package/docs/eo-diagram.md +60 -12
  31. package/package.json +2 -2
  32. package/dist/chunks/4922.d504ca2a.js +0 -2
  33. package/dist/chunks/4922.d504ca2a.js.map +0 -1
  34. package/dist/chunks/eo-diagram.fa73c8ae.js +0 -2
  35. package/dist/chunks/eo-diagram.fa73c8ae.js.map +0 -1
  36. package/dist/chunks/main.cc81c286.js +0 -2
  37. package/dist/index.cf4aa49d.js +0 -2
  38. /package/dist/chunks/{7312.73a6c3bb.js.LICENSE.txt → 7312.3688d673.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/4922.d504ca2a.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,2 +0,0 @@
1
- "use strict";(self.webpackChunk_next_bricks_diagram=self.webpackChunk_next_bricks_diagram||[]).push([[9016],{7853:(e,t,n)=>{n.d(t,{L8:()=>s});var a=n(3028),r=n(8657),i=n.n(r),o=n(9494),l=n(9464);function s(e){var{labels:t,onRendered:n}=e,[a,o]=(0,r.useState)(!1),[l,s]=(0,r.useState)([]),u=(0,r.useMemo)((()=>new Map),[]),v=(0,r.useCallback)(((e,t)=>{t&&u.set(e,t),s((t=>t.includes(e)?t:t.concat(e)))}),[u]),h=(0,r.useCallback)((e=>{s((t=>{var n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,r.useEffect)((()=>{o(!(null!=t&&t.some((e=>!l.includes(e.id)))))}),[t,l]),(0,r.useEffect)((()=>{null==n||n(a?u:null)}),[u,a]),i().createElement(i().Fragment,null,null==t?void 0:t.map((e=>{var{text:t,label:n,position:a,id:r,edge:o}=e;return n?i().createElement("div",{key:r,className:"line-label",style:{left:a[0],top:a[1]}},i().createElement(c,{id:r,edge:o,label:n,onRendered:v,onUnmount:h})):i().createElement(d,{key:r,id:r,text:t,position:a,onRendered:v})})))}function d(e){var{id:t,text:n,position:o,onRendered:l}=e,s=(0,r.useCallback)((e=>{null==l||l(t,e)}),[t,l]);return i().createElement("div",{className:"line-label",ref:s,style:(0,a.Z)({left:o[0],top:o[1]},n.style)},n.content)}function c(e){var{id:t,edge:n,label:a,onRendered:s,onUnmount:d}=e,c=(0,r.useMemo)((()=>(0,l.checkIfByTransform)(a,{edge:n})?a.useBrick:null),[n,a]),u=(0,r.useMemo)((()=>({edge:n})),[n]);(0,r.useEffect)((()=>{c||setTimeout((()=>{null==s||s(t,null)}))}),[t,s,c]),(0,r.useEffect)((()=>()=>{null==d||d(t)}),[]);var v=(0,r.useCallback)((e=>{e&&setTimeout((()=>{null==s||s(t,e.parentElement)}))}),[t,s]),h=(0,r.useCallback)((()=>{setTimeout((()=>{null==s||s(t,null)}))}),[t,s]);return c?i().createElement(o.ReactUseBrick,{refCallback:v,ignoredCallback:h,useBrick:c,data:u}):null}},4370:(e,t,n)=>{n.d(t,{n:()=>l});var a=n(8657),r=n.n(a),i=n(9494),o=n(3442);function l(e){var{nodes:t,nodeBricks:n,onRendered:i}=e,[o,l]=(0,a.useState)(!1),[d,c]=(0,a.useState)([]),u=(0,a.useMemo)((()=>new Map),[]),v=(0,a.useCallback)(((e,t)=>{t&&u.set(e,t),c((t=>t.includes(e)?t:t.concat(e)))}),[u]),h=(0,a.useCallback)((e=>{c((t=>{var n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,a.useEffect)((()=>{l(!(null!=t&&t.some((e=>!d.includes(e.id)))))}),[t,d]),(0,a.useEffect)((()=>{null==i||i(o?u:null)}),[u,o]),r().createElement(r().Fragment,null,null==t?void 0:t.map((e=>r().createElement("div",{key:e.id,className:"node"},r().createElement(s,{nodeBricks:n,node:e,onRendered:v,onUnmount:h})))))}function s(e){var{node:t,nodeBricks:n,onRendered:l,onUnmount:s}=e,d=(0,a.useMemo)((()=>{var e;return null===(e=(0,o.U)(t,n))||void 0===e?void 0:e.useBrick}),[t,n]),c=(0,a.useMemo)((()=>({node:t})),[t]);(0,a.useEffect)((()=>{d||setTimeout((()=>{null==l||l(t.id,null)}))}),[t.id,l,d]),(0,a.useEffect)((()=>()=>{null==s||s(t.id)}),[]);var u=(0,a.useCallback)((e=>{e&&setTimeout((()=>{null==l||l(t.id,e)}))}),[t.id,l]),v=(0,a.useCallback)((()=>{setTimeout((()=>{null==l||l(t.id,null)}))}),[t.id,l]);return d?r().createElement(i.ReactUseBrick,{refCallback:u,ignoredCallback:v,useBrick:d,data:c}):null}},5318:(e,t,n)=>{n.d(t,{IC:()=>a,_w:()=>r,no:()=>i,wl:()=>o});var a="var(--palette-gray-5)",r=1,i="curveBasis",o=20},2715:(e,t,n)=>{n.r(t),n.d(t,{EoDiagram:()=>T,EoDiagramComponent:()=>ce,LegacyEoDiagramComponent:()=>Oe});var a,r,i,o,l,s,d,c,u,v,h,f,p,g,m,b,k,y,w,Z,E,x,M,C,B,N,W,S,L,R,D,I,A,T,O=n(3028),_=n(3395),P=n(1815),U=n(381),$=n(687),K=n(5066),z=n(8657),H=n.n(z),X=n(5727),Y=n(305),q=(n(928),n(908)),j=n.n(q),F=n(1105),G=n(7397),J=n(2779),Q=n.n(J),V=n(1211),ee=n(4370),te=n(5702),ne=n(6365),ae=n(693),re=n(6436),ie=n(7853),{defineElement:oe,property:le,event:se,method:de}=(0,X.createDecorators)(),ce=(0,z.forwardRef)(Oe);r=oe("eo-diagram",{styleTexts:[re.Z]}),i=le({type:String}),l=le({attribute:!1}),d=le({attribute:!1}),u=le({attribute:!1}),h=le({attribute:!1}),p=le({attribute:!1}),m=le({type:String}),k=le({type:Boolean}),w=se({type:"activeNode.change"}),M=se({type:"node.delete"}),W=se({type:"line.dblclick"}),D=de();var ue=new WeakMap,ve=new WeakMap,he=new WeakMap,fe=new WeakMap,pe=new WeakMap,ge=new WeakMap,me=new WeakMap,be=new WeakMap,ke=new WeakMap,ye=new WeakMap,we=new WeakMap,Ze=new WeakMap,Ee=new WeakMap,xe=new WeakMap,Me=new WeakMap,Ce=new WeakMap,Be=new WeakMap,Ne=new WeakMap,We=new WeakMap;class Se extends Y.ReactNextElement{constructor(){super(...arguments),(0,_.Z)(this,Ce,{get:Te,set:Ae}),(0,_.Z)(this,Ee,{get:Ie,set:De}),(0,_.Z)(this,ye,{get:Re,set:Le}),(0,_.Z)(this,ue,{writable:!0,value:(I(this),o(this))}),(0,_.Z)(this,ve,{writable:!0,value:s(this)}),(0,_.Z)(this,he,{writable:!0,value:c(this)}),(0,_.Z)(this,fe,{writable:!0,value:v(this)}),(0,_.Z)(this,pe,{writable:!0,value:f(this)}),(0,_.Z)(this,ge,{writable:!0,value:g(this)}),(0,_.Z)(this,me,{writable:!0,value:b(this)}),(0,_.Z)(this,be,{writable:!0,value:y(this)}),(0,_.Z)(this,ke,{writable:!0,value:Z(this)}),(0,_.Z)(this,we,{writable:!0,value:e=>{(0,$.Z)(this,ye).emit(e)}}),(0,_.Z)(this,Ze,{writable:!0,value:C(this)}),(0,_.Z)(this,xe,{writable:!0,value:e=>{(0,$.Z)(this,Ee).emit(e)}}),(0,_.Z)(this,Me,{writable:!0,value:S(this)}),(0,_.Z)(this,Be,{writable:!0,value:e=>{(0,$.Z)(this,Ce).emit(e)}}),(0,_.Z)(this,Ne,{writable:!0,value:e=>{this.activeNodeId=e}}),(0,_.Z)(this,We,{writable:!0,value:(0,z.createRef)()})}get layout(){return(0,$.Z)(this,ue)}set layout(e){(0,U.Z)(this,ue,e)}get nodes(){return(0,$.Z)(this,ve)}set nodes(e){(0,U.Z)(this,ve,e)}get edges(){return(0,$.Z)(this,he)}set edges(e){(0,U.Z)(this,he,e)}get nodeBricks(){return(0,$.Z)(this,fe)}set nodeBricks(e){(0,U.Z)(this,fe,e)}get lines(){return(0,$.Z)(this,pe)}set lines(e){(0,U.Z)(this,pe,e)}get layoutOptions(){return(0,$.Z)(this,ge)}set layoutOptions(e){(0,U.Z)(this,ge,e)}get activeNodeId(){return(0,$.Z)(this,me)}set activeNodeId(e){(0,U.Z)(this,me,e)}get disableKeyboardAction(){return(0,$.Z)(this,be)}set disableKeyboardAction(e){(0,U.Z)(this,be,e)}callOnLineLabel(e,t){for(var n,a=arguments.length,r=new Array(a>2?a-2:0),i=2;i<a;i++)r[i-2]=arguments[i];null===(n=(0,$.Z)(this,We).current)||void 0===n||n.callOnLineLabel(e,t,...r)}render(){return H().createElement(ce,{ref:(0,$.Z)(this,We),layout:this.layout,nodes:this.nodes,edges:this.edges,nodeBricks:this.nodeBricks,lines:this.lines,layoutOptions:this.layoutOptions,activeNodeId:this.activeNodeId,disableKeyboardAction:this.disableKeyboardAction,onActiveNodeChange:(0,$.Z)(this,we),onSwitchActiveNode:(0,$.Z)(this,Ne),onNodeDelete:(0,$.Z)(this,xe),onLineDoubleClick:(0,$.Z)(this,Be)})}}function Le(e){x(this,e)}function Re(){return E(this)}function De(e){N(this,e)}function Ie(){return B(this)}function Ae(e){R(this,e)}function Te(){return L(this)}function Oe(e,t){var{layout:n,nodes:a,edges:r,nodeBricks:i,lines:o,layoutOptions:l,activeNodeId:s,disableKeyboardAction:d,onActiveNodeChange:c,onSwitchActiveNode:u,onNodeDelete:v,onLineDoubleClick:h}=e,[f,p]=(0,z.useState)(null),[g,m]=(0,z.useState)(!1),[b,k]=(0,z.useState)(0),[y,w]=(0,z.useState)(null),[Z,E]=(0,z.useState)(0),[x,M]=(0,z.useState)(null),[C,B]=(0,z.useState)([]),[N,W]=(0,z.useState)([]),[S,L]=(0,z.useState)([]),R=(0,z.useRef)(null),[D,I]=(0,z.useState)(!1),[A,T]=(0,z.useState)({k:1,x:0,y:0}),_=(0,z.useRef)(new Map),P=(0,z.useRef)(null),U=(0,z.useRef)(null),[$,K]=(0,z.useState)([0,0]),[X,Y]=(0,z.useState)(!1);(0,z.useImperativeHandle)(t,(()=>({callOnLineLabel(e,t){for(var n,a=arguments.length,r=new Array(a>2?a-2:0),i=2;i<a;i++)r[i-2]=arguments[i];null==x||null===(n=x.get(e))||void 0===n||null===(n=n.firstElementChild)||void 0===n||n[t](...r)}})));var q=(0,z.useMemo)((()=>(0,O.Z)({rankdir:"TB",ranksep:50,edgesep:10,nodesep:50,nodePadding:0},l)),[l]),{nodePadding:J}=q,re=(0,z.useMemo)((()=>(0,V.pick)(q,["rankdir","ranksep","edgesep","nodesep","align"])),[q]);(0,z.useEffect)((()=>{var e=s?null==a?void 0:a.find((e=>e.id===s)):void 0;null==c||c(e)}),[a,s,c]),(0,z.useEffect)((()=>{p((e=>{var t=new(j().graphlib.Graph);for(var n of(t.setGraph(re),t.setDefaultEdgeLabel((function(){return{}})),null!=a?a:[])){var i=null==e?void 0:e.node(n.id);t.setNode(n.id,(null==i?void 0:i.data)===n?i:{id:n.id,data:n})}for(var o of null!=r?r:[])t.setEdge(o.source,o.target,{data:o});return t}))}),[r,a,re]),(0,z.useEffect)((()=>{if(f&&y&&0!==f.nodeCount()){for(var e of f.nodes()){var t,n,a=f.node(e);if(a){var r=y.get(e);a.width=(null!==(t=null==r?void 0:r.offsetWidth)&&void 0!==t?t:10)+2*J,a.height=(null!==(n=null==r?void 0:r.offsetHeight)&&void 0!==n?n:10)+2*J}else console.error("Diagram node not found: %s",e)}j().layout(f);var i=[];for(var o of f.nodes()){var l,s=f.node(o);if(s){i.push(s);var d=s.x-s.width/2+J,c=s.y-s.height/2+J,u=null===(l=y.get(o))||void 0===l?void 0:l.parentElement;u&&(u.style.left="".concat(d,"px"),u.style.top="".concat(c,"px"),u.style.visibility="visible")}}B(i),W(f.edges().map((e=>f.edge(e))))}}),[f,y,b,J]);var{renderedLines:oe,markers:le}=(0,z.useMemo)((()=>(0,ae.b)(N,o)),[o,N]);(0,z.useEffect)((()=>{var e=P.current;if(e&&!d){var t=e=>{var t=(0,te.p)(e,{renderedNodes:C,renderedEdges:N,activeNodeId:s});"delete-node"===(null==t?void 0:t.action)?null==v||v(t.node):"switch-active-node"===(null==t?void 0:t.action)&&t.node&&(null==u||u(t.node.id))};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}}}),[s,C,N,d,u,v]);var se=(0,z.useCallback)((e=>{e&&(k((e=>e+1)),w(e)),m((t=>t||!!e))}),[]),de=(0,z.useCallback)((e=>{e&&(E((e=>e+1)),M(e))}),[]);(0,z.useEffect)((()=>{var e=P.current,t=R.current;if(e&&t){var n=!1,a=(0,G.sP)().scaleExtent([1,1]).on("start",(()=>{n=!1,I(!0)})).on("zoom",(e=>{n=!0,T(e.transform)})).on("end",(()=>{I(!1),n||null==u||u(void 0)}));(0,F.Z)(t).call(a),(0,F.Z)(e).on("wheel.zoom",(e=>{e.stopPropagation(),e.preventDefault(),a.translateBy((0,F.Z)(t),e.wheelDeltaX/5,e.wheelDeltaY/5)}))}}),[u]),(0,z.useEffect)((()=>{var e=P.current;0!==C.length&&e&&!X&&(K((0,ne.i)(C,[e.clientWidth,e.clientHeight])),Y(!0))}),[X,C]);var ce=(0,z.useMemo)((()=>"".concat((0,V.uniqueId)("diagram-"),"-")),[]),ue="".concat(ce,"line-arrow-"),ve="".concat(ce,"clip-path-");(0,z.useEffect)((()=>{L((e=>0===e.length&&0===oe.length?e:oe.map((e=>{var{line:{text:t,label:n,$id:a},edge:r}=e,i=_.current.get(a);if((t||n)&&i&&i.getAttribute("d")){var{x:o,y:l,width:s,height:d}=i.getBBox(),c=1e3,u=o-c,v=l-c,h=o+s+c,f=l+d+c,p=i.getPointAtLength(i.getTotalLength()/2);return{text:t,label:n,edge:r,position:[p.x,p.y],lineRect:{left:u,top:v,right:h,bottom:f},id:a}}})).filter(Boolean)))}),[oe]);var[he,fe]=H().useState([]);return(0,z.useEffect)((()=>{x&&fe(S.map((e=>{var{id:t}=e,n=null==x?void 0:x.get(t);if(n){var{offsetWidth:a,offsetHeight:r}=n;if(0!==a&&0!==r)return{x0:n.offsetLeft-a/2-3,y0:n.offsetTop-r/2-3,w:a+6,h:r+6,id:t}}})).filter(Boolean))}),[Z,x,S]),"dagre"!==n?H().createElement("div",null,'Diagram layout not supported: "'.concat(n,'"')):H().createElement("div",{className:Q()("diagram",{ready:g&&X}),tabIndex:-1,ref:P},H().createElement("div",{className:Q()("dragger",{grabbing:D}),ref:R}),H().createElement("svg",{width:"100%",height:"100%",className:"lines"},H().createElement("defs",null,le.map(((e,t)=>{var{strokeColor:n}=e;return H().createElement("marker",{key:t,id:"".concat(ue).concat(t),viewBox:"0 0 6 6",refX:3,refY:3,markerWidth:6,markerHeight:6,orient:"auto"},H().createElement("path",{d:"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z",stroke:n,strokeWidth:1,fill:n}))})),he.map((e=>{var{x0:t,y0:n,w:a,h:r,id:i}=e,o=S.find((e=>e.id===i));if(o){var{left:l,top:s,right:d,bottom:c}=o.lineRect;return H().createElement("clipPath",{key:i,id:"".concat(ve).concat(i)},H().createElement("polygon",{points:["".concat(t,",").concat(n+r),"".concat(t+a,",").concat(n+r),"".concat(t+a,",").concat(n),"".concat(t,",").concat(n),"".concat(t,",").concat(s),"".concat(d,",").concat(s),"".concat(d,",").concat(c),"".concat(l,",").concat(c),"".concat(l,",").concat(s),"".concat(t,",").concat(s)].join(" ")}))}}))),H().createElement("g",{transform:"translate(".concat($[0]+A.x," ").concat($[1]+A.y,") scale(").concat(A.k,")")},oe.map((e=>{var t,{line:n,d:a,markerIndex:r,edge:i}=e;return H().createElement("g",{className:Q()("line",{interactable:n.interactable}),key:n.$id,onDoubleClick:n.interactable?e=>(e.preventDefault(),e.stopPropagation(),null==h?void 0:h({id:n.$id,edge:i})):void 0},H().createElement("path",{ref:e=>_.current.set(n.$id,e),stroke:n.strokeColor,strokeWidth:n.strokeWidth,d:a,fill:"none",markerEnd:void 0===r?void 0:"url(#".concat(ue).concat(r,")"),clipPath:he.some((e=>e.id===n.$id))?"url(#".concat(ve).concat(n.$id,")"):void 0}),n.interactable&&H().createElement("path",{d:a,fill:"none",stroke:"transparent",strokeWidth:null!==(t=n.interactStrokeWidth)&&void 0!==t?t:5}))})))),H().createElement("div",{className:"line-labels",style:{left:$[0]+A.x,top:$[1]+A.y}},H().createElement(ie.L8,{labels:S,onRendered:de})),H().createElement("div",{className:"nodes",ref:U,style:{left:$[0]+A.x,top:$[1]+A.y}},H().createElement(ee.n,{nodes:a,nodeBricks:i,onRendered:se})))}A=Se,({e:[o,s,c,v,f,g,b,y,Z,E,x,C,B,N,S,L,R,I],c:[T,a]}=(0,K.Z)(A,[[i,1,"layout"],[l,1,"nodes"],[d,1,"edges"],[u,1,"nodeBricks"],[h,1,"lines"],[p,1,"layoutOptions"],[m,1,"activeNodeId"],[k,1,"disableKeyboardAction"],[w,1,"activeNodeChangeEvent",e=>(0,$.Z)(e,ke),(e,t)=>(0,U.Z)(e,ke,t)],[M,1,"nodeDelete",e=>(0,$.Z)(e,Ze),(e,t)=>(0,U.Z)(e,Ze,t)],[W,1,"lineDoubleClick",e=>(0,$.Z)(e,Me),(e,t)=>(0,U.Z)(e,Me,t)],[D,2,"callOnLineLabel"]],[r],0,(e=>We.has((0,P.Z)(e))),Y.ReactNextElement)),a()},5807:(e,t,n)=>{n.d(t,{M:()=>d});var a=n(3698),r=n(1479),i=n(6481),o=n(9389),l=n(8282),s=n(5004);function d(e,t,n){if(!Array.isArray(e))return"";var d;switch(n){case"curveBasis":d=a.ZP;break;case"curveBumpX":d=r.sj;break;case"curveBumpY":d=r.BW;break;case"curveMonotoneX":d=i.Z;break;case"curveMonotoneY":d=i.s;break;case"curveNatural":d=o.Z;break;default:d=l.Z}var c=0,u=0;if(t){var{x:v,y:h}=e[e.length-2],{x:f,y:p}=e[e.length-1],g=t/Math.sqrt(Math.pow(f-v,2)+Math.pow(p-h,2));c=(v-f)*g,u=(h-p)*g}var m=e;return(0,s.Z)().x(((t,n)=>t.x-(n===e.length-1?c:0))).y(((t,n)=>t.y-(n===e.length-1?u:0))).curve(d)(m)}},3442:(e,t,n)=>{n.d(t,{U:()=>r});var a=n(9464);function r(e,t){return null==t?void 0:t.find((t=>t.nodeType?[].concat(t.nodeType).includes(e.type):(0,a.checkIfByTransform)(t,{node:e})))}},6365:(e,t,n)=>{function a(e,t){var[n,a]=t,r=1/0,i=1/0,o=-1/0,l=-1/0;for(var s of e){var d=s.width/2,c=s.height/2,u=s.x-d,v=s.x+d,h=s.y-c,f=s.y+c;u<r&&(r=u),v>o&&(o=v),h<i&&(i=h),f>l&&(l=f)}return[(n-(o-r))/2-i,(a-(l-i))/2-r]}n.d(t,{i:()=>a})},693:(e,t,n)=>{n.d(t,{b:()=>u});var a=n(3028),r=n(2159),i=n(1211),o=n(9464),l=n(5093),s=n(5318),d=n(5807),c=["label"];function u(e,t){var n=[],u=[],v=function(e){var v,h=null!==(v=null==t?void 0:t.find((t=>(0,l.o)(e,t))))&&void 0!==v?v:{},{label:p}=h,g=(0,r.Z)(h,c),m=o.__secret_internals.legacyDoTransform({edge:e},g);if(!1===(null==m?void 0:m.draw))return 1;var b,k=(0,a.Z)((0,a.Z)({strokeColor:s.IC,strokeWidth:s._w,curveType:s.no,interactStrokeWidth:s.wl},m),{},{label:p,$id:(0,i.uniqueId)("line-")});if(k.arrow){var y={strokeColor:k.strokeColor};-1===(b=(0,i.findIndex)(u,y))&&(b=u.push(y)-1)}var w=(0,d.M)(f,k.arrow?-5:0,k.curveType);n.push({line:k,d:w,markerIndex:b,edge:e})};for(var{data:h,points:f}of e)v(h);return{renderedLines:n,markers:u}}},5702:(e,t,n)=>{n.d(t,{p:()=>r});var a=n(1211);function r(e,t){var{renderedNodes:n,renderedEdges:a,activeNodeId:r}=t,l=r?n.find((e=>e.id===r)):void 0;if(l){var s,d,c;switch(e.key||e.keyCode||e.which){case"ArrowLeft":case 37:d=i(n,l,-1),s="switch-active-node";break;case"ArrowUp":case 38:d=o(n,a,l,-1),s="switch-active-node";break;case"ArrowRight":case 39:d=i(n,l,1),s="switch-active-node";break;case"ArrowDown":case 40:d=o(n,a,l,1),s="switch-active-node";break;case"Backspace":case 8:case"Delete":case 46:s="delete-node",d=l}if(s)return e.preventDefault(),e.stopPropagation(),{action:s,node:null===(c=d)||void 0===c?void 0:c.data}}}function i(e,t,n){var r,i=e.filter((e=>e!==t&&(r=(e.x-t.x)*n)>0&&r>Math.abs(t.y-e.y)));return(0,a.minBy)(i,(e=>(t.y-e.y)**2+(t.x-e.x)**2))}function o(e,t,n,r){var i=1===r?"source":"target",o=1===r?"target":"source",l=t.filter((e=>{var{data:t}=e;return t[i]===n.id&&t[o]!==n.id})).map((t=>{var{data:n}=t;return e.find((e=>e.id===n[o]))})).filter((e=>e&&(e.y-n.y)*r>0));return(0,a.minBy)(l,(e=>(n.y-e.y)**2+(n.x-e.x)**2))}},5093:(e,t,n)=>{n.d(t,{o:()=>r});var a=n(9464);function r(e,t){return!!t&&(t.edgeType?[].concat(t.edgeType).includes(e.type):(0,a.checkIfByTransform)(t,{edge:e}))}},6436:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(9601),r=n.n(a),i=n(2609),o=n.n(i)()(r());o.push([e.id,":host{display:block;width:100%;height:100%;overflow:hidden}:host([hidden]){display:none}*{box-sizing:border-box}.diagram{width:100%;height:100%;position:relative;opacity:0}.diagram:focus{outline:none}.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}",""]);const l=o.toString()}}]);
2
- //# sourceMappingURL=eo-diagram.fa73c8ae.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/eo-diagram.fa73c8ae.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\";\nexport const DEFAULT_LINE_INTERACT_STROKE_WIDTH = 20;\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 {\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 { __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 { 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}.lines{pointer-events:none}.line.interactable{pointer-events:auto}`, \"\"]);\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","DEFAULT_LINE_INTERACT_STROKE_WIDTH","_EoDiagram","defineElement","property","event","method","createDecorators","EoDiagramComponent","forwardRef","LegacyEoDiagramComponent","_dec","styleTexts","styleText","_dec2","type","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","line","activeNodeId","createRef","layout","v","_classPrivateFieldSet","edges","lines","layoutOptions","disableKeyboardAction","callOnLineLabel","_classPrivateFieldGet2","_len","length","args","Array","_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","renderedNodes","setRenderedNodes","renderedEdges","setRenderedEdges","renderedLineLabels","setRenderedLineLabels","draggerRef","useRef","grabbing","setGrabbing","transform","setTransform","k","x","y","linePathsRef","rootRef","nodesRef","offsets","setOffsets","centered","setCentered","useImperativeHandle","_lineLabelsRefReposit","_len2","_key2","firstElementChild","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","onKeydown","action","handleKeyboard","addEventListener","removeEventListener","handleNodesRendered","handleLineLabelsRendered","dragger","moved","zoomer","zoom","scaleExtent","on","select","call","stopPropagation","preventDefault","translateBy","wheelDeltaX","wheelDeltaY","getCenterOffsets","clientWidth","clientHeight","defPrefix","uniqueId","markerPrefix","clipPathPrefix","$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","_line$interactStrokeW","markerIndex","interactable","onDoubleClick","markerEnd","clipPath","clip","interactStrokeWidth","_class","c","_initClass","_applyDecs","o","_","has","_checkInRHS","curveLine","arrowOffset","curveType","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","_lines$find","matchEdgeByFilter","restLineConf","_objectWithoutProperties","_excluded","computedLineConf","__secret_internals","legacyDoTransform","draw","arrow","marker","findIndex","activeNode","_node","keyCode","which","moveOnX","moveOnY","direction","diff","candidates","abs","minBy","from","to","edgeType","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (()=>{var e,t,r,n,a,o,l,i,c,u,d,s,f,h,p,m,b,v,g,x,y,P,k={8691:(e,t,r)=>{Promise.all([r.e(7312),r.e(8657),r.e(5727),r.e(8842),r.e(9464),r.e(462),r.e(4922)]).then(r.bind(r,4922))}},w={};function j(e){var t=w[e];if(void 0!==t)return t.exports;var r=w[e]={id:e,loaded:!1,exports:{}};return k[e].call(r.exports,r,r.exports,j),r.loaded=!0,r.exports}j.m=k,j.c=w,j.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return j.d(t,{a:t}),t},j.d=(e,t)=>{for(var r in t)j.o(t,r)&&!j.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce(((t,r)=>(j.f[r](e,t),t)),[])),j.u=e=>"chunks/"+e+"."+{462:"f4b458c8",488:"5e90153b",628:"ae14642a",1303:"70dabf75",1502:"bee3a64c",1646:"6589b358",1874:"85ba64ca",2024:"53d97685",2108:"9bb5ebe7",2573:"0baab81f",2754:"cbea5866",2784:"70c3fd78",2993:"ec4c251f",3458:"a63a4d80",4031:"e35a7582",4049:"6256a178",4275:"7315c167",4504:"82bbca66",4717:"34d53aaa",4922:"d504ca2a",4936:"954f2abc",5151:"614d7062",5178:"018c624e",5381:"1b2b9749",5628:"c306b668",5725:"78b21531",5727:"73c569d3",5932:"98a700e0",6205:"414655fa",6315:"b7be1d21",6473:"ca92cfbd",6635:"41cb938a",6653:"e9c85257",6660:"7a61b375",7067:"3f1f372f",7110:"8e981c34",7164:"6d67a26b",7312:"73a6c3bb",7672:"15496b7a",7746:"98303035",7915:"26a8005c",8008:"5a59b5bb",8065:"ef94b24a",8316:"19210606",8498:"e0c035d5",8657:"318e9117",8691:"2d98de11",8842:"2ca363e7",8874:"96dfb1e5",9431:"968072ff",9464:"2876e79a",9549:"09d4fb2e",9758:"50558c06"}[e]+".js",j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="@next-bricks/diagram:",j.l=(r,n,a,o)=>{if(e[r])e[r].push(n);else{var l,i;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+a){l=d;break}}l||(i=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,j.nc&&l.setAttribute("nonce",j.nc),l.setAttribute("data-webpack",t+a),l.src=r),e[r]=[n];var s=(t,n)=>{l.onerror=l.onload=null,clearTimeout(f);var a=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(n))),t)return t(n)},f=setTimeout(s.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=s.bind(null,l.onerror),l.onload=s.bind(null,l.onload),i&&document.head.appendChild(l)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},j.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{j.S={};var e={},t={};j.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[r])return e[r];j.o(j.S,r)||(j.S[r]={});var o=j.S[r],l="@next-bricks/diagram",i=(e,t,r,n)=>{var a=o[e]=o[e]||{},i=a[t];(!i||!i.loaded&&(!n!=!i.eager?n:l>i.from))&&(a[t]={get:r,from:l,eager:!!n})},c=[];return"default"===r&&(i("@babel/parser","7.23.6",(()=>j.e(1874).then((()=>()=>j(1874))))),i("@easyops-cn/brick-next-pipes","0.6.0",(()=>Promise.all([j.e(4031),j.e(9758)]).then((()=>()=>j(4031))))),i("@next-core/cook","2.2.11",(()=>Promise.all([j.e(5151),j.e(2573)]).then((()=>()=>j(5151))))),i("@next-core/element","1.2.1",(()=>j.e(9549).then((()=>()=>j(9549))))),i("@next-core/http","1.1.8",(()=>j.e(7067).then((()=>()=>j(7067))))),i("@next-core/i18n","1.0.36",(()=>Promise.all([j.e(4936),j.e(5932),j.e(7164)]).then((()=>()=>j(7164))))),i("@next-core/inject","1.0.26",(()=>Promise.all([j.e(1502),j.e(5178),j.e(7672)]).then((()=>()=>j(7672))))),i("@next-core/loader","1.5.3",(()=>j.e(8498).then((()=>()=>j(8498))))),i("@next-core/pipes","2.0.15",(()=>j.e(4275).then((()=>()=>j(4275))))),i("@next-core/react-element","1.0.20",(()=>Promise.all([j.e(8657),j.e(5727),j.e(8065),j.e(1646)]).then((()=>()=>j(1646))))),i("@next-core/react-runtime","1.1.45",(()=>Promise.all([j.e(8657),j.e(9464),j.e(6660)]).then((()=>()=>j(6660))))),i("@next-core/runtime","1.29.1",(()=>Promise.all([j.e(4504),j.e(5178),j.e(5932),j.e(8874),j.e(488),j.e(6315)]).then((()=>()=>j(4504))))),i("@next-core/supply","2.1.10",(()=>Promise.all([j.e(1502),j.e(5178),j.e(8874),j.e(4049)]).then((()=>()=>j(4049))))),i("@next-core/theme","1.4.8",(()=>Promise.all([j.e(2108),j.e(5628)]).then((()=>()=>j(2108))))),i("@next-core/utils/general","1.6.8",(()=>j.e(7110).then((()=>()=>j(7110))))),i("@next-core/utils/storyboard","1.6.8",(()=>Promise.all([j.e(628),j.e(488),j.e(3458)]).then((()=>()=>j(3458))))),i("history","4.10.1",(()=>j.e(2024).then((()=>()=>j(2024))))),i("i18next-browser-languagedetector","7.2.0",(()=>j.e(2754).then((()=>()=>j(2754))))),i("i18next","22.5.1",(()=>j.e(2993).then((()=>()=>j(2993))))),i("js-yaml","3.14.1",(()=>j.e(9431).then((()=>()=>j(9431))))),i("lodash","4.17.21",(()=>j.e(6635).then((()=>()=>j(6635))))),i("moment/locale/zh-cn.js","2.29.4",(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(7414))))),i("moment","2.29.4",(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),i("react-dom","0.0.0-experimental-ee8509801-20230117",(()=>Promise.all([j.e(8316),j.e(8657)]).then((()=>()=>j(8316))))),i("react","0.0.0-experimental-ee8509801-20230117",(()=>j.e(2784).then((()=>()=>j(2784)))))),e[r]=c.length?Promise.all(c).then((()=>e[r]=1)):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var t=j.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e+"../"})(),r=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},n=(e,t)=>{e=r(e),t=r(t);for(var n=0;;){if(n>=e.length)return n<t.length&&"u"!=(typeof t[n])[0];var a=e[n],o=(typeof a)[0];if(n>=t.length)return"u"==o;var l=t[n],i=(typeof l)[0];if(o!=i)return"o"==o&&"n"==i||"s"==i||"u"==o;if("o"!=o&&"u"!=o&&a!=l)return a<l;n++}},a=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,r+="u"==(typeof(i=e[o]))[0]?"-":(n>0?".":"")+(n=2,i);return r}var l=[];for(o=1;o<e.length;o++){var i=e[o];l.push(0===i?"not("+c()+")":1===i?"("+c()+" || "+c()+")":2===i?l.pop()+" "+l.pop():a(i))}return c();function c(){return l.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,t)=>{if(0 in e){t=r(t);var n=e[0],a=n<0;a&&(n=-n-1);for(var l=0,i=1,c=!0;;i++,l++){var u,d,s=i<e.length?(typeof e[i])[0]:"";if(l>=t.length||"o"==(d=(typeof(u=t[l]))[0]))return!c||("u"==s?i>n&&!a:""==s!=a);if("u"==d){if(!c||"u"!=s)return!1}else if(c)if(s==d)if(i<=n){if(u!=e[i])return!1}else{if(a?u>e[i]:u<e[i])return!1;u!=e[i]&&(c=!1)}else if("s"!=s&&"n"!=s){if(a||i<=n)return!1;c=!1,i--}else{if(i<=n||d<s!=a)return!1;c=!1}else"s"!=s&&"n"!=s&&(c=!1,i--)}}var f=[],h=f.pop.bind(f);for(l=1;l<e.length;l++){var p=e[l];f.push(1==p?h()|h():2==p?h()&h():p?o(p,t):!h())}return!!h()},l=(e,t)=>{var r=e[t];return(t=Object.keys(r).reduce(((e,t)=>!e||n(e,t)?t:e),0))&&r[t]},i=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},c=(e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+a(n)+")",u=(e,t,r,n)=>{var a=i(e,r);return h(e[r][a])},d=(e,t,r,n)=>{var a=i(e,r);return o(n,a)||f(c(e,r,a,n)),h(e[r][a])},s=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!o(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},f=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},h=e=>(e.loaded=1,e.get()),m=(p=e=>function(t,r,n,a){var o=j.I(t);return o&&o.then?o.then(e.bind(e,t,j.S[t],r,n,a)):e(t,j.S[t],r,n,a)})(((e,t,r,n)=>t&&j.o(t,r)?h(l(t,r)):n())),b=p(((e,t,r,n)=>t&&j.o(t,r)?u(t,0,r):n())),v=p(((e,t,r,n,a)=>t&&j.o(t,r)?d(t,0,r,n):a())),g=p(((e,t,r,n,a)=>{var o=t&&j.o(t,r)&&s(t,r,n);return o?h(o):a()})),x={},y={8657:()=>g("default","react",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>j.e(2784).then((()=>()=>j(2784))))),5727:()=>g("default","@next-core/element",[1,1,2,1],(()=>j.e(4717).then((()=>()=>j(9549))))),305:()=>g("default","@next-core/react-element",[1,1,0,20],(()=>Promise.all([j.e(8065),j.e(7746)]).then((()=>()=>j(1646))))),928:()=>v("default","@next-core/theme",[1,1,4,8],(()=>j.e(2108).then((()=>()=>j(2108))))),9464:()=>v("default","@next-core/runtime",[1,1,29,1],(()=>Promise.all([j.e(4504),j.e(5178),j.e(5932),j.e(8874),j.e(488),j.e(6315)]).then((()=>()=>j(4504))))),1211:()=>b("default","lodash",(()=>j.e(6635).then((()=>()=>j(6635))))),9494:()=>g("default","@next-core/react-runtime",[1,1,1,45],(()=>j.e(5381).then((()=>()=>j(6660))))),5872:()=>v("default","moment",[1,2,27,0],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),5899:()=>v("default","js-yaml",[1,3,14,0],(()=>j.e(9431).then((()=>()=>j(9431))))),6976:()=>v("default","lodash",[1,4,17,19],(()=>j.e(6635).then((()=>()=>j(6635))))),2573:()=>v("default","@babel/parser",[1,7,23,6],(()=>j.e(1874).then((()=>()=>j(1874))))),3239:()=>v("default","i18next",[1,22,5,1],(()=>j.e(2993).then((()=>()=>j(2993))))),7207:()=>v("default","i18next-browser-languagedetector",[1,7,2,0],(()=>j.e(2754).then((()=>()=>j(2754))))),1065:()=>v("default","@next-core/i18n",[1,1,0,36],(()=>Promise.all([j.e(4936),j.e(6205)]).then((()=>()=>j(7164))))),1935:()=>v("default","@next-core/utils/general",[1,1,6,8],(()=>j.e(7110).then((()=>()=>j(7110))))),1502:()=>v("default","@next-core/pipes",[1,2,0,15],(()=>j.e(4275).then((()=>()=>j(4275))))),5178:()=>v("default","lodash",[1,4,17,21],(()=>j.e(6635).then((()=>()=>j(6635))))),5454:()=>v("default","@easyops-cn/brick-next-pipes",[2,0,6,0],(()=>Promise.all([j.e(4031),j.e(9758)]).then((()=>()=>j(4031))))),2484:()=>g("default","react-dom",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>j.e(8316).then((()=>()=>j(8316))))),6650:()=>m("default","react-dom",(()=>j.e(8316).then((()=>()=>j(8316))))),8874:()=>v("default","moment",[1,2,29,4],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),488:()=>v("default","@next-core/cook",[1,2,2,11],(()=>Promise.all([j.e(5151),j.e(2573)]).then((()=>()=>j(5151))))),815:()=>v("default","@next-core/inject",[1,1,0,26],(()=>Promise.all([j.e(1502),j.e(5725)]).then((()=>()=>j(7672))))),4699:()=>v("default","@next-core/utils/storyboard",[1,1,6,8],(()=>Promise.all([j.e(628),j.e(8691)]).then((()=>()=>j(3458))))),5932:()=>v("default","@next-core/http",[1,1,1,8],(()=>j.e(1303).then((()=>()=>j(7067))))),6974:()=>v("default","@next-core/loader",[1,1,5,3],(()=>j.e(6653).then((()=>()=>j(8498))))),7857:()=>v("default","history",[1,4,10,1],(()=>j.e(2024).then((()=>()=>j(2024))))),7941:()=>v("default","@next-core/supply",[1,2,1,10],(()=>Promise.all([j.e(1502),j.e(6473)]).then((()=>()=>j(4049))))),8525:()=>v("default","moment/locale/zh-cn.js",[1,2,29,4],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(7414))))),628:()=>b("default","@next-core/utils/general",(()=>j.e(7110).then((()=>()=>j(7110)))))},P={462:[1211,9494],488:[488],628:[628],1502:[1502],2573:[2573],4275:[5454],4936:[3239,7207],5178:[5178],5727:[5727],5932:[1065,1935],6315:[815,4699,5932,6974,7857,7941,8525],8065:[2484,6650],8657:[8657],8842:[305,928],8874:[8874],9464:[9464],9758:[5872,5899,6976]},j.f.consumes=(e,t)=>{j.o(P,e)&&P[e].forEach((e=>{if(j.o(x,e))return t.push(x[e]);var r=t=>{x[e]=0,j.m[e]=r=>{delete j.c[e],r.exports=t()}},n=t=>{delete x[e],j.m[e]=r=>{throw delete j.c[e],t}};try{var a=y[e]();a.then?t.push(x[e]=a.then(r).catch(n)):r(a)}catch(e){n(e)}}))},(()=>{var e={179:0};j.f.j=(t,r)=>{var n=j.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(4(62|88|936)|5(178|727|932)|8(065|657|842|874)|1502|2573|628|6315|9464|9758)$/.test(t))e[t]=0;else{var a=new Promise(((r,a)=>n=e[t]=[r,a]));r.push(n[2]=a);var o=j.p+j.u(t),l=new Error;j.l(o,(r=>{if(j.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",l.name="ChunkLoadError",l.type=a,l.request=o,n[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,a,[o,l,i]=r,c=0;if(o.some((t=>0!==e[t]))){for(n in l)j.o(l,n)&&(j.m[n]=l[n]);i&&i(j)}for(t&&t(r);c<o.length;c++)a=o[c],j.o(e,a)&&e[a]&&e[a][0](),e[a]=0},r=self.webpackChunk_next_bricks_diagram=self.webpackChunk_next_bricks_diagram||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),j.nc=void 0,j(8691)})();
2
- //# sourceMappingURL=main.cc81c286.js.map
@@ -1,2 +0,0 @@
1
- (()=>{"use strict";var e,t,r,n,a,o,l,i,d,c,s,u,f,h,m,p,b,v,g,x,y,P,w={6684:(e,t,r)=>{var n={"./eo-diagram":()=>Promise.all([r.e(7312),r.e(8657),r.e(5727),r.e(8842),r.e(9464),r.e(462),r.e(9016)]).then((()=>()=>r(2715))),"./editable-label":()=>Promise.all([r.e(8657),r.e(5727),r.e(8842),r.e(3189)]).then((()=>()=>r(9067)))},a=(e,t)=>(r.R=t,t=r.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),r.R=void 0,t),o=(e,t)=>{if(r.S){var n="default",a=r.S[n];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[n]=e,r.I(n,t)}};r.d(t,{get:()=>a,init:()=>o})}},k={};function j(e){var t=k[e];if(void 0!==t)return t.exports;var r=k[e]={id:e,loaded:!1,exports:{}};return w[e].call(r.exports,r,r.exports,j),r.loaded=!0,r.exports}j.m=w,j.c=k,j.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return j.d(t,{a:t}),t},j.d=(e,t)=>{for(var r in t)j.o(t,r)&&!j.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce(((t,r)=>(j.f[r](e,t),t)),[])),j.u=e=>"chunks/"+({3189:"editable-label",9016:"eo-diagram"}[e]||e)+"."+{462:"f4b458c8",488:"5e90153b",628:"ae14642a",1303:"70dabf75",1502:"bee3a64c",1646:"6589b358",1874:"85ba64ca",2024:"53d97685",2108:"9bb5ebe7",2573:"0baab81f",2754:"cbea5866",2784:"70c3fd78",2993:"ec4c251f",3189:"cb1a4691",3458:"a63a4d80",4031:"e35a7582",4049:"6256a178",4275:"7315c167",4504:"82bbca66",4717:"34d53aaa",4936:"954f2abc",5151:"614d7062",5178:"018c624e",5381:"1b2b9749",5628:"c306b668",5725:"78b21531",5727:"73c569d3",5932:"98a700e0",6205:"414655fa",6315:"b7be1d21",6473:"ca92cfbd",6635:"41cb938a",6653:"e9c85257",6660:"7a61b375",7067:"3f1f372f",7110:"8e981c34",7164:"6d67a26b",7312:"73a6c3bb",7672:"15496b7a",7746:"98303035",7915:"26a8005c",8008:"5a59b5bb",8065:"ef94b24a",8316:"19210606",8498:"e0c035d5",8657:"318e9117",8691:"2d98de11",8842:"2ca363e7",8874:"96dfb1e5",9016:"fa73c8ae",9431:"968072ff",9464:"2876e79a",9549:"09d4fb2e",9758:"50558c06"}[e]+".js",j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="@next-bricks/diagram:",j.l=(r,n,a,o)=>{if(e[r])e[r].push(n);else{var l,i;if(void 0!==a)for(var d=document.getElementsByTagName("script"),c=0;c<d.length;c++){var s=d[c];if(s.getAttribute("src")==r||s.getAttribute("data-webpack")==t+a){l=s;break}}l||(i=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,j.nc&&l.setAttribute("nonce",j.nc),l.setAttribute("data-webpack",t+a),l.src=r),e[r]=[n];var u=(t,n)=>{l.onerror=l.onload=null,clearTimeout(f);var a=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(n))),t)return t(n)},f=setTimeout(u.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=u.bind(null,l.onerror),l.onload=u.bind(null,l.onload),i&&document.head.appendChild(l)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},j.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{j.S={};var e={},t={};j.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[r])return e[r];j.o(j.S,r)||(j.S[r]={});var o=j.S[r],l="@next-bricks/diagram",i=(e,t,r,n)=>{var a=o[e]=o[e]||{},i=a[t];(!i||!i.loaded&&(!n!=!i.eager?n:l>i.from))&&(a[t]={get:r,from:l,eager:!!n})},d=[];return"default"===r&&(i("@babel/parser","7.23.6",(()=>j.e(1874).then((()=>()=>j(1874))))),i("@easyops-cn/brick-next-pipes","0.6.0",(()=>Promise.all([j.e(4031),j.e(9758)]).then((()=>()=>j(4031))))),i("@next-core/cook","2.2.11",(()=>Promise.all([j.e(5151),j.e(2573)]).then((()=>()=>j(5151))))),i("@next-core/element","1.2.1",(()=>j.e(9549).then((()=>()=>j(9549))))),i("@next-core/http","1.1.8",(()=>j.e(7067).then((()=>()=>j(7067))))),i("@next-core/i18n","1.0.36",(()=>Promise.all([j.e(4936),j.e(5932),j.e(7164)]).then((()=>()=>j(7164))))),i("@next-core/inject","1.0.26",(()=>Promise.all([j.e(1502),j.e(5178),j.e(7672)]).then((()=>()=>j(7672))))),i("@next-core/loader","1.5.3",(()=>j.e(8498).then((()=>()=>j(8498))))),i("@next-core/pipes","2.0.15",(()=>j.e(4275).then((()=>()=>j(4275))))),i("@next-core/react-element","1.0.20",(()=>Promise.all([j.e(8657),j.e(5727),j.e(8065),j.e(1646)]).then((()=>()=>j(1646))))),i("@next-core/react-runtime","1.1.45",(()=>Promise.all([j.e(8657),j.e(9464),j.e(6660)]).then((()=>()=>j(6660))))),i("@next-core/runtime","1.29.1",(()=>Promise.all([j.e(4504),j.e(5178),j.e(5932),j.e(8874),j.e(488),j.e(6315)]).then((()=>()=>j(4504))))),i("@next-core/supply","2.1.10",(()=>Promise.all([j.e(1502),j.e(5178),j.e(8874),j.e(4049)]).then((()=>()=>j(4049))))),i("@next-core/theme","1.4.8",(()=>Promise.all([j.e(2108),j.e(5628)]).then((()=>()=>j(2108))))),i("@next-core/utils/general","1.6.8",(()=>j.e(7110).then((()=>()=>j(7110))))),i("@next-core/utils/storyboard","1.6.8",(()=>Promise.all([j.e(628),j.e(488),j.e(3458)]).then((()=>()=>j(3458))))),i("history","4.10.1",(()=>j.e(2024).then((()=>()=>j(2024))))),i("i18next-browser-languagedetector","7.2.0",(()=>j.e(2754).then((()=>()=>j(2754))))),i("i18next","22.5.1",(()=>j.e(2993).then((()=>()=>j(2993))))),i("js-yaml","3.14.1",(()=>j.e(9431).then((()=>()=>j(9431))))),i("lodash","4.17.21",(()=>j.e(6635).then((()=>()=>j(6635))))),i("moment/locale/zh-cn.js","2.29.4",(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(7414))))),i("moment","2.29.4",(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),i("react-dom","0.0.0-experimental-ee8509801-20230117",(()=>Promise.all([j.e(8316),j.e(8657)]).then((()=>()=>j(8316))))),i("react","0.0.0-experimental-ee8509801-20230117",(()=>j.e(2784).then((()=>()=>j(2784)))))),e[r]=d.length?Promise.all(d).then((()=>e[r]=1)):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var t=j.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e})(),r=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},n=(e,t)=>{e=r(e),t=r(t);for(var n=0;;){if(n>=e.length)return n<t.length&&"u"!=(typeof t[n])[0];var a=e[n],o=(typeof a)[0];if(n>=t.length)return"u"==o;var l=t[n],i=(typeof l)[0];if(o!=i)return"o"==o&&"n"==i||"s"==i||"u"==o;if("o"!=o&&"u"!=o&&a!=l)return a<l;n++}},a=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,r+="u"==(typeof(i=e[o]))[0]?"-":(n>0?".":"")+(n=2,i);return r}var l=[];for(o=1;o<e.length;o++){var i=e[o];l.push(0===i?"not("+d()+")":1===i?"("+d()+" || "+d()+")":2===i?l.pop()+" "+l.pop():a(i))}return d();function d(){return l.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,t)=>{if(0 in e){t=r(t);var n=e[0],a=n<0;a&&(n=-n-1);for(var l=0,i=1,d=!0;;i++,l++){var c,s,u=i<e.length?(typeof e[i])[0]:"";if(l>=t.length||"o"==(s=(typeof(c=t[l]))[0]))return!d||("u"==u?i>n&&!a:""==u!=a);if("u"==s){if(!d||"u"!=u)return!1}else if(d)if(u==s)if(i<=n){if(c!=e[i])return!1}else{if(a?c>e[i]:c<e[i])return!1;c!=e[i]&&(d=!1)}else if("s"!=u&&"n"!=u){if(a||i<=n)return!1;d=!1,i--}else{if(i<=n||s<u!=a)return!1;d=!1}else"s"!=u&&"n"!=u&&(d=!1,i--)}}var f=[],h=f.pop.bind(f);for(l=1;l<e.length;l++){var m=e[l];f.push(1==m?h()|h():2==m?h()&h():m?o(m,t):!h())}return!!h()},l=(e,t)=>{var r=e[t];return(t=Object.keys(r).reduce(((e,t)=>!e||n(e,t)?t:e),0))&&r[t]},i=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},d=(e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+a(n)+")",c=(e,t,r,n)=>{var a=i(e,r);return h(e[r][a])},s=(e,t,r,n)=>{var a=i(e,r);return o(n,a)||f(d(e,r,a,n)),h(e[r][a])},u=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!o(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},f=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},h=e=>(e.loaded=1,e.get()),p=(m=e=>function(t,r,n,a){var o=j.I(t);return o&&o.then?o.then(e.bind(e,t,j.S[t],r,n,a)):e(t,j.S[t],r,n,a)})(((e,t,r,n)=>t&&j.o(t,r)?h(l(t,r)):n())),b=m(((e,t,r,n)=>t&&j.o(t,r)?c(t,0,r):n())),v=m(((e,t,r,n,a)=>t&&j.o(t,r)?s(t,0,r,n):a())),g=m(((e,t,r,n,a)=>{var o=t&&j.o(t,r)&&u(t,r,n);return o?h(o):a()})),x={},y={5872:()=>v("default","moment",[1,2,27,0],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),5899:()=>v("default","js-yaml",[1,3,14,0],(()=>j.e(9431).then((()=>()=>j(9431))))),6976:()=>v("default","lodash",[1,4,17,19],(()=>j.e(6635).then((()=>()=>j(6635))))),2573:()=>v("default","@babel/parser",[1,7,23,6],(()=>j.e(1874).then((()=>()=>j(1874))))),3239:()=>v("default","i18next",[1,22,5,1],(()=>j.e(2993).then((()=>()=>j(2993))))),7207:()=>v("default","i18next-browser-languagedetector",[1,7,2,0],(()=>j.e(2754).then((()=>()=>j(2754))))),1065:()=>v("default","@next-core/i18n",[1,1,0,36],(()=>Promise.all([j.e(4936),j.e(6205)]).then((()=>()=>j(7164))))),1935:()=>v("default","@next-core/utils/general",[1,1,6,8],(()=>j.e(7110).then((()=>()=>j(7110))))),1502:()=>v("default","@next-core/pipes",[1,2,0,15],(()=>j.e(4275).then((()=>()=>j(4275))))),5178:()=>v("default","lodash",[1,4,17,21],(()=>j.e(6635).then((()=>()=>j(6635))))),5454:()=>v("default","@easyops-cn/brick-next-pipes",[2,0,6,0],(()=>Promise.all([j.e(4031),j.e(9758)]).then((()=>()=>j(4031))))),8657:()=>g("default","react",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>j.e(2784).then((()=>()=>j(2784))))),5727:()=>g("default","@next-core/element",[1,1,2,1],(()=>j.e(4717).then((()=>()=>j(9549))))),2484:()=>g("default","react-dom",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>j.e(8316).then((()=>()=>j(8316))))),6650:()=>p("default","react-dom",(()=>j.e(8316).then((()=>()=>j(8316))))),9464:()=>v("default","@next-core/runtime",[1,1,29,1],(()=>Promise.all([j.e(4504),j.e(5178),j.e(5932),j.e(8874),j.e(488),j.e(6315)]).then((()=>()=>j(4504))))),8874:()=>v("default","moment",[1,2,29,4],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(9034))))),488:()=>v("default","@next-core/cook",[1,2,2,11],(()=>Promise.all([j.e(5151),j.e(2573)]).then((()=>()=>j(5151))))),815:()=>v("default","@next-core/inject",[1,1,0,26],(()=>Promise.all([j.e(1502),j.e(5725)]).then((()=>()=>j(7672))))),4699:()=>v("default","@next-core/utils/storyboard",[1,1,6,8],(()=>Promise.all([j.e(628),j.e(8691)]).then((()=>()=>j(3458))))),5932:()=>v("default","@next-core/http",[1,1,1,8],(()=>j.e(1303).then((()=>()=>j(7067))))),6974:()=>v("default","@next-core/loader",[1,1,5,3],(()=>j.e(6653).then((()=>()=>j(8498))))),7857:()=>v("default","history",[1,4,10,1],(()=>j.e(2024).then((()=>()=>j(2024))))),7941:()=>v("default","@next-core/supply",[1,2,1,10],(()=>Promise.all([j.e(1502),j.e(6473)]).then((()=>()=>j(4049))))),8525:()=>v("default","moment/locale/zh-cn.js",[1,2,29,4],(()=>Promise.all([j.e(8008),j.e(7915)]).then((()=>()=>j(7414))))),628:()=>b("default","@next-core/utils/general",(()=>j.e(7110).then((()=>()=>j(7110))))),305:()=>g("default","@next-core/react-element",[1,1,0,20],(()=>Promise.all([j.e(8065),j.e(7746)]).then((()=>()=>j(1646))))),928:()=>v("default","@next-core/theme",[1,1,4,8],(()=>j.e(2108).then((()=>()=>j(2108))))),1211:()=>b("default","lodash",(()=>j.e(6635).then((()=>()=>j(6635))))),9494:()=>g("default","@next-core/react-runtime",[1,1,1,45],(()=>j.e(5381).then((()=>()=>j(6660)))))},P={462:[1211,9494],488:[488],628:[628],1502:[1502],2573:[2573],4275:[5454],4936:[3239,7207],5178:[5178],5727:[5727],5932:[1065,1935],6315:[815,4699,5932,6974,7857,7941,8525],8065:[2484,6650],8657:[8657],8842:[305,928],8874:[8874],9464:[9464],9758:[5872,5899,6976]},j.f.consumes=(e,t)=>{j.o(P,e)&&P[e].forEach((e=>{if(j.o(x,e))return t.push(x[e]);var r=t=>{x[e]=0,j.m[e]=r=>{delete j.c[e],r.exports=t()}},n=t=>{delete x[e],j.m[e]=r=>{throw delete j.c[e],t}};try{var a=y[e]();a.then?t.push(x[e]=a.then(r).catch(n)):r(a)}catch(e){n(e)}}))},(()=>{var e={9093:0};j.f.j=(t,r)=>{var n=j.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(4(62|88|936)|5(178|727|932)|8(065|657|842|874)|1502|2573|628|6315|9464|9758)$/.test(t))e[t]=0;else{var a=new Promise(((r,a)=>n=e[t]=[r,a]));r.push(n[2]=a);var o=j.p+j.u(t),l=new Error;j.l(o,(r=>{if(j.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",l.name="ChunkLoadError",l.type=a,l.request=o,n[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,a,[o,l,i]=r,d=0;if(o.some((t=>0!==e[t]))){for(n in l)j.o(l,n)&&(j.m[n]=l[n]);i&&i(j)}for(t&&t(r);d<o.length;d++)a=o[d],j.o(e,a)&&e[a]&&e[a][0](),e[a]=0},r=self.webpackChunk_next_bricks_diagram=self.webpackChunk_next_bricks_diagram||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),j.nc=void 0;var S=j(6684);window["bricks/diagram"]=S})();
2
- //# sourceMappingURL=index.cf4aa49d.js.map