|
|
|
@ -7,6 +7,7 @@ import {
|
|
|
|
|
useLayoutEffect,
|
|
|
|
|
useRef,
|
|
|
|
|
useState,
|
|
|
|
|
MouseEvent as ReactMouseEvent,
|
|
|
|
|
} from "react"
|
|
|
|
|
import {
|
|
|
|
|
add,
|
|
|
|
@ -398,14 +399,12 @@ export default function BendableArrow({
|
|
|
|
|
}
|
|
|
|
|
}, [update, containerRef])
|
|
|
|
|
|
|
|
|
|
// Inserts a segment where the mouse double clicks on the arrow
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (forceStraight) return
|
|
|
|
|
|
|
|
|
|
const addSegment = (e: MouseEvent) => {
|
|
|
|
|
const addSegment = useCallback(
|
|
|
|
|
(e: ReactMouseEvent) => {
|
|
|
|
|
if (forceStraight) return
|
|
|
|
|
const parentBase = area.current!.getBoundingClientRect()
|
|
|
|
|
|
|
|
|
|
const clickAbsolutePos: Pos = { x: e.x, y: e.y }
|
|
|
|
|
const clickAbsolutePos: Pos = { x: e.pageX, y: e.pageY }
|
|
|
|
|
const clickPosBaseRatio = ratioWithinBase(
|
|
|
|
|
clickAbsolutePos,
|
|
|
|
|
parentBase,
|
|
|
|
@ -473,14 +472,9 @@ export default function BendableArrow({
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pathRef?.current?.addEventListener("dblclick", addSegment)
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
pathRef?.current?.removeEventListener("dblclick", addSegment)
|
|
|
|
|
}
|
|
|
|
|
}, [pathRef, segments, onSegmentsChanges])
|
|
|
|
|
},
|
|
|
|
|
[area, forceStraight, onSegmentsChanges, segments, startPos],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div
|
|
|
|
@ -503,6 +497,7 @@ export default function BendableArrow({
|
|
|
|
|
}
|
|
|
|
|
fill="none"
|
|
|
|
|
tabIndex={0}
|
|
|
|
|
onDoubleClick={addSegment}
|
|
|
|
|
onKeyUp={(e) => {
|
|
|
|
|
if (onDeleteRequested && e.key == "Delete")
|
|
|
|
|
onDeleteRequested()
|
|
|
|
|