| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
                        - import { Graph } from '@antv/g6';
 - import { useSize } from 'ahooks';
 - import { useEffect, useRef } from 'react';
 - import { graphData } from './constant';
 - 
 - import styles from './index.less';
 - import { Converter } from './util';
 - 
 - const converter = new Converter();
 - 
 - const nextData = converter.buildNodesAndCombos(
 -   graphData.nodes,
 -   graphData.edges,
 - );
 - console.log('🚀 ~ nextData:', nextData);
 - 
 - const finalData = { ...graphData, ...nextData };
 - 
 - const ForceGraph = () => {
 -   const containerRef = useRef<HTMLDivElement>(null);
 -   const size = useSize(containerRef);
 - 
 -   const render = () => {
 -     const graph = new Graph({
 -       container: containerRef.current!,
 -       autoFit: 'view',
 -       behaviors: ['drag-element', 'drag-canvas', 'zoom-canvas'],
 -       plugins: [
 -         {
 -           type: 'tooltip',
 -           getContent: (e, items) => {
 -             if (items.every((x) => x?.description)) {
 -               let result = ``;
 -               items.forEach((item) => {
 -                 if (item?.description) {
 -                   result += `<p>${item?.description}</p>`;
 -                 }
 -               });
 -               return result;
 -             }
 -             return undefined;
 -           },
 -         },
 -       ],
 -       layout: {
 -         type: 'combo-combined',
 -         comboPadding: 2,
 -       },
 -       node: {
 -         style: {
 -           size: 20,
 -           labelText: (d) => d.id,
 -           labelPadding: 20,
 -           //   labelOffsetX: 20,
 -           labelOffsetY: 5,
 -         },
 -         palette: {
 -           type: 'group',
 -           field: (d) => d.combo,
 -         },
 -       },
 -       edge: {
 -         style: (model) => {
 -           const { size, color } = model.data;
 -           return {
 -             stroke: color || '#99ADD1',
 -             lineWidth: size || 1,
 -           };
 -         },
 -       },
 -       //   data: graphData,
 -     });
 - 
 -     graph.setData(finalData);
 - 
 -     graph.render();
 -   };
 - 
 -   useEffect(() => {
 -     render();
 -   }, []);
 - 
 -   return <div ref={containerRef} className={styles.container} />;
 - };
 - 
 - export default ForceGraph;
 
 
  |