Spaces:
Running
Running
<script lang="ts"> | |
import { onMount } from 'svelte'; | |
import { type NodeProps } from '@xyflow/svelte'; | |
import Sigma from 'sigma'; | |
import * as graphology from 'graphology'; | |
import * as graphologyLibrary from 'graphology-library'; | |
import LynxKiteNode from './LynxKiteNode.svelte'; | |
type $$Props = NodeProps; | |
export let id: $$Props['id']; | |
export let data: $$Props['data']; | |
let sigmaCanvas: HTMLElement; | |
let sigmaInstance: Sigma; | |
const graph = graphology.Graph.from({ | |
attributes: { | |
name: 'My Graph' | |
}, | |
options: { | |
allowSelfLoops: true, | |
multi: false, | |
type: 'mixed' | |
}, | |
nodes: [ | |
{key: 'Thomas'}, | |
{key: 'Eric'} | |
], | |
edges: [ | |
{ | |
key: 'T->E', | |
source: 'Thomas', | |
target: 'Eric', | |
} | |
] | |
}); | |
graphologyLibrary.layout.random.assign(graph); | |
const settings = graphologyLibrary.layoutForceAtlas2.inferSettings(graph); | |
graphologyLibrary.layoutForceAtlas2.assign(graph, { iterations: 10, settings }); | |
graphologyLibrary.layoutNoverlap.assign(graph, { settings: { ratio: 3 } }); | |
onMount(async () => { | |
sigmaInstance = new Sigma(graph, sigmaCanvas); | |
}); | |
</script> | |
<LynxKiteNode id={id} data={data} {...$$restProps}> | |
<div bind:this={sigmaCanvas} style="height: 200px; width: 200px;" > | |
</div> | |
</LynxKiteNode> | |
<style> | |
</style> | |