|
|
|
@ -80,29 +80,37 @@ const getTargetIndexAccountingForBinding = (
|
|
|
|
|
direction: "left" | "right",
|
|
|
|
|
) => {
|
|
|
|
|
if ("containerId" in nextElement && nextElement.containerId) {
|
|
|
|
|
if (direction === "left") {
|
|
|
|
|
const containerElement = Scene.getScene(nextElement)!.getElement(
|
|
|
|
|
nextElement.containerId,
|
|
|
|
|
);
|
|
|
|
|
if (containerElement) {
|
|
|
|
|
return elements.indexOf(containerElement);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return elements.indexOf(nextElement);
|
|
|
|
|
const containerElement = Scene.getScene(nextElement)!.getElement(
|
|
|
|
|
nextElement.containerId,
|
|
|
|
|
);
|
|
|
|
|
if (containerElement) {
|
|
|
|
|
return direction === "left"
|
|
|
|
|
? Math.min(
|
|
|
|
|
elements.indexOf(containerElement),
|
|
|
|
|
elements.indexOf(nextElement),
|
|
|
|
|
)
|
|
|
|
|
: Math.max(
|
|
|
|
|
elements.indexOf(containerElement),
|
|
|
|
|
elements.indexOf(nextElement),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const boundElementId = nextElement.boundElements?.find(
|
|
|
|
|
(binding) => binding.type !== "arrow",
|
|
|
|
|
)?.id;
|
|
|
|
|
if (boundElementId) {
|
|
|
|
|
if (direction === "left") {
|
|
|
|
|
return elements.indexOf(nextElement);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const boundTextElement =
|
|
|
|
|
Scene.getScene(nextElement)!.getElement(boundElementId);
|
|
|
|
|
if (boundTextElement) {
|
|
|
|
|
return elements.indexOf(boundTextElement);
|
|
|
|
|
return direction === "left"
|
|
|
|
|
? Math.min(
|
|
|
|
|
elements.indexOf(boundTextElement),
|
|
|
|
|
elements.indexOf(nextElement),
|
|
|
|
|
)
|
|
|
|
|
: Math.max(
|
|
|
|
|
elements.indexOf(boundTextElement),
|
|
|
|
|
elements.indexOf(nextElement),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|