Update MkMenu.vue

This commit is contained in:
syuilo
2026-02-25 22:01:42 +09:00
committed by GitHub
parent b19b6a9ee7
commit 023d45b496

View File

@@ -526,20 +526,20 @@ function parentMouseMove(ev: MouseEvent) {
const childBounding = child.value.rootElement.getBoundingClientRect(); const childBounding = child.value.rootElement.getBoundingClientRect();
const isChildRight = childBounding.left > rootBounding.left; const isChildRight = childBounding.left > rootBounding.left;
const CUSOR_SIDE_X_PADDING = 3; // (px) const CURSOR_SIDE_X_PADDING = 3; // (px)
const CHILD_SIDE_Y_PADDING_BASE = 70; // (px) const CHILD_SIDE_Y_PADDING_BASE = 70; // (px)
const CHILD_SIDE_Y_PADDING_EXTEND = 30; // (px) const CHILD_SIDE_Y_PADDING_EXTEND = 30; // (px)
const SCALE_FACTOR_COMPUTE_DISTANCE = 300; // コーンの広さが最大になる距離(px) const SCALE_FACTOR_COMPUTE_DISTANCE = 300; // コーンの広さが最大になる距離(px)
const relativeMouseX = ev.clientX - itemBounding.left; const localMouseX = ev.clientX - itemBounding.left;
const relativeMouseY = ev.clientY - rootBounding.top; const localMouseY = ev.clientY - rootBounding.top;
const scaleFactor = isChildRight ? Math.min((itemBounding.width - relativeMouseX), SCALE_FACTOR_COMPUTE_DISTANCE) / SCALE_FACTOR_COMPUTE_DISTANCE : Math.min(relativeMouseX, SCALE_FACTOR_COMPUTE_DISTANCE) / SCALE_FACTOR_COMPUTE_DISTANCE; const scaleFactor = isChildRight ? Math.min((itemBounding.width - localMouseX), SCALE_FACTOR_COMPUTE_DISTANCE) / SCALE_FACTOR_COMPUTE_DISTANCE : Math.min(localMouseX, SCALE_FACTOR_COMPUTE_DISTANCE) / SCALE_FACTOR_COMPUTE_DISTANCE;
const cursorSideXPadding = isChildRight ? CUSOR_SIDE_X_PADDING : -CUSOR_SIDE_X_PADDING; const cursorSideXPadding = isChildRight ? CURSOR_SIDE_X_PADDING : -CURSOR_SIDE_X_PADDING;
const childSideYPadding = CHILD_SIDE_Y_PADDING_BASE + (CHILD_SIDE_Y_PADDING_EXTEND * scaleFactor); const childSideYPadding = CHILD_SIDE_Y_PADDING_BASE + (CHILD_SIDE_Y_PADDING_EXTEND * scaleFactor);
guard.enabled = true; guard.enabled = true;
guard.top = itemsEl.value!.scrollTop; guard.top = itemsEl.value!.scrollTop;
guard.cursorSideX = relativeMouseX - cursorSideXPadding; guard.cursorSideX = localMouseX - cursorSideXPadding;
guard.cursorSideY = relativeMouseY; guard.cursorSideY = localMouseY;
guard.childSideTopY = (childBounding.top - rootBounding.top) - childSideYPadding; guard.childSideTopY = (childBounding.top - rootBounding.top) - childSideYPadding;
guard.childSideBottomY = (childBounding.bottom - rootBounding.top) + childSideYPadding; guard.childSideBottomY = (childBounding.bottom - rootBounding.top) + childSideYPadding;
guard.direction = isChildRight ? 'toRight' : 'toLeft'; guard.direction = isChildRight ? 'toRight' : 'toLeft';