|
9 | 9 | <component |
10 | 10 | :is="arrow.react.collab.bodyType === 'curve' ? CurveArrow : LineArrow" |
11 | 11 | :style="{ |
12 | | - 'pointer-events': |
13 | | - page.arrowCreation.react.active || page.dragging.react.active |
14 | | - ? 'none' |
15 | | - : undefined, |
| 12 | + 'pointer-events': page.arrowCreation.react.active ? 'none' : undefined, |
16 | 13 | }" |
17 | 14 | @pointerdown.left.stop="onLeftPointerDown" |
| 15 | + @pointerup.left="onLeftPointerUp" |
18 | 16 | @click.left="onLeftClick" |
19 | 17 | ></component> |
20 | 18 |
|
|
36 | 34 |
|
37 | 35 | <script setup lang="ts"> |
38 | 36 | import type { PageArrow } from 'src/code/pages/page/arrows/arrow'; |
| 37 | +import { PageNote } from 'src/code/pages/page/notes/note'; |
39 | 38 | import type { Page } from 'src/code/pages/page/page'; |
40 | 39 | import { createDoubleClickChecker } from 'src/code/utils/misc'; |
41 | 40 |
|
@@ -72,6 +71,35 @@ function onLeftPointerDown(event: PointerEvent) { |
72 | 71 | props.arrow.grab(event); |
73 | 72 | } |
74 | 73 |
|
| 74 | +async function onLeftPointerUp(event: PointerEvent) { |
| 75 | + if ( |
| 76 | + page.dragging.react.active && |
| 77 | + page.selection.react.elems.length === 1 && |
| 78 | + page.selection.react.elems[0].type === 'note' |
| 79 | + ) { |
| 80 | + if (props.arrow.react.region instanceof PageNote) { |
| 81 | + await page.dropping.perform(props.arrow.react.region); |
| 82 | + } else { |
| 83 | + page.dragging.cancel(); |
| 84 | + } |
| 85 | +
|
| 86 | + const targetNote = props.arrow.react.targetNote; |
| 87 | +
|
| 88 | + const middleNote = page.selection.react.elems[0]; |
| 89 | +
|
| 90 | + // eslint-disable-next-line vue/no-mutating-props |
| 91 | + props.arrow.react.collab.target = middleNote.id; |
| 92 | +
|
| 93 | + page.arrowCreation.create({ |
| 94 | + sourceNote: middleNote, |
| 95 | + targetNote: targetNote, |
| 96 | + anchor: null, |
| 97 | + baseArrow: props.arrow, |
| 98 | + event, |
| 99 | + }); |
| 100 | + } |
| 101 | +} |
| 102 | +
|
75 | 103 | const checkDoubleClick = createDoubleClickChecker(); |
76 | 104 |
|
77 | 105 | async function onLeftClick(event: MouseEvent) { |
|
0 commit comments