added edgemouseenter and edgemouseleave events

This commit is contained in:
peterkogo
2024-06-04 09:29:51 +02:00
parent 3cc14e8ee5
commit 4d3ede32eb
4 changed files with 26 additions and 5 deletions
@@ -159,6 +159,8 @@
on:nodemouseenter={(event) => console.log('on node enter', event)} on:nodemouseenter={(event) => console.log('on node enter', event)}
on:nodemouseleave={(event) => console.log('on node leave', event)} on:nodemouseleave={(event) => console.log('on node leave', event)}
on:edgeclick={(event) => console.log('edge click', event)} on:edgeclick={(event) => console.log('edge click', event)}
on:edgemouseenter={(event) => console.log('edge enter', event)}
on:edgemouseleave={(event) => console.log('edge leave', event)}
onconnectstart={(event) => console.log('on connect start', event)} onconnectstart={(event) => console.log('on connect start', event)}
onconnect={(event) => console.log('on connect', event)} onconnect={(event) => console.log('on connect', event)}
onconnectend={(event) => console.log('on connect end', event)} onconnectend={(event) => console.log('on connect end', event)}
@@ -50,6 +50,8 @@
const dispatch = createEventDispatcher<{ const dispatch = createEventDispatcher<{
edgeclick: { edge: Edge; event: MouseEvent | TouchEvent }; edgeclick: { edge: Edge; event: MouseEvent | TouchEvent };
edgecontextmenu: { edge: Edge; event: MouseEvent }; edgecontextmenu: { edge: Edge; event: MouseEvent };
edgemouseenter: { edge: Edge; event: MouseEvent };
edgemouseleave: { edge: Edge; event: MouseEvent };
}>(); }>();
$: edgeType = type || 'default'; $: edgeType = type || 'default';
@@ -69,11 +71,12 @@
} }
} }
function onContextMenu(event: MouseEvent) { type EdgeMouseEvent = 'edgecontextmenu' | 'edgemouseenter' | 'edgemouseleave';
function onMouseEvent(event: MouseEvent, type: EdgeMouseEvent) {
const edge = $edgeLookup.get(id); const edge = $edgeLookup.get(id);
if (edge) { if (edge) {
dispatch('edgecontextmenu', { event, edge }); dispatch(type, { event, edge });
} }
} }
</script> </script>
@@ -89,7 +92,15 @@
class:selectable={isSelectable} class:selectable={isSelectable}
data-id={id} data-id={id}
on:click={onClick} on:click={onClick}
on:contextmenu={onContextMenu} on:contextmenu={(e) => {
onMouseEvent(e, 'edgecontextmenu');
}}
on:mouseenter={(e) => {
onMouseEvent(e, 'edgemouseenter');
}}
on:mouseleave={(e) => {
onMouseEvent(e, 'edgemouseleave');
}}
aria-label={ariaLabel === null aria-label={ariaLabel === null
? undefined ? undefined
: ariaLabel : ariaLabel
@@ -12,7 +12,7 @@
visibleEdges, visibleEdges,
edgesInitialized, edgesInitialized,
edges: { setDefaultOptions }, edges: { setDefaultOptions },
elementsSelectable, elementsSelectable
} = useStore(); } = useStore();
onMount(() => { onMount(() => {
@@ -56,6 +56,8 @@
zIndex={edge.zIndex} zIndex={edge.zIndex}
on:edgeclick on:edgeclick
on:edgecontextmenu on:edgecontextmenu
on:edgemouseenter
on:edgemouseleave
/> />
{/each} {/each}
@@ -222,7 +222,13 @@
{selectionOnDrag} {selectionOnDrag}
> >
<ViewportComponent> <ViewportComponent>
<EdgeRenderer on:edgeclick on:edgecontextmenu {defaultEdgeOptions} /> <EdgeRenderer
on:edgeclick
on:edgecontextmenu
on:edgemouseenter
on:edgemouseleave
{defaultEdgeOptions}
/>
<ConnectionLine <ConnectionLine
containerStyle={connectionLineContainerStyle} containerStyle={connectionLineContainerStyle}
style={connectionLineStyle} style={connectionLineStyle}