@@ -640,6 +640,7 @@ export default defineComponent({
640
640
641
641
onMounted (() => {
642
642
app .stage .addListener (' click' , event => {
643
+ if (cameraDragging ) return
643
644
const choice = getEventAtPosition (event .data .global .x , event .data .global .y )
644
645
if (choice ) {
645
646
selectEvent (choice )
@@ -1099,6 +1100,60 @@ export default defineComponent({
1099
1100
updateVScroll ()
1100
1101
})
1101
1102
1103
+ // Camera dragging
1104
+
1105
+ let cameraDragging = false
1106
+ let startDragX: number
1107
+ let startDragY: number
1108
+ let startDragTime: number
1109
+ let startDragScrollTop: number
1110
+
1111
+ onMounted (() => {
1112
+ const layersScroller = document .querySelector (' [data-scroller="layers"]' )
1113
+
1114
+ const onMouseMove = (event ) => {
1115
+ const { x, y } = event .data .global
1116
+ if (! cameraDragging && (Math .abs (x - startDragX ) > 5 || Math .abs (y - startDragY ) > 5 )) {
1117
+ cameraDragging = true
1118
+ }
1119
+
1120
+ if (cameraDragging ) {
1121
+ const deltaX = startDragX - x
1122
+ const deltaY = startDragY - y
1123
+
1124
+ // Horizontal
1125
+ const size = endTime .value - startTime .value
1126
+ const viewWidth = wrapper .value .offsetWidth
1127
+ const delta = deltaX / viewWidth * size
1128
+ let start = startTime .value = startDragTime + delta
1129
+ if (start < minTime .value ) {
1130
+ start = minTime .value
1131
+ } else if (start + size >= maxTime .value ) {
1132
+ start = maxTime .value - size
1133
+ }
1134
+ startTime .value = start
1135
+ endTime .value = start + size
1136
+
1137
+ // Vertical
1138
+ layersScroller .scrollTop = startDragScrollTop + deltaY
1139
+ }
1140
+ }
1141
+
1142
+ app .stage .addListener (' mousedown' , (event ) => {
1143
+ const { x, y } = event .data .global
1144
+ startDragX = x
1145
+ startDragY = y
1146
+ startDragTime = startTime .value
1147
+ startDragScrollTop = layersScroller .scrollTop
1148
+ app .stage .addListener (' mousemove' , onMouseMove )
1149
+ })
1150
+
1151
+ window .addEventListener (' mouseup' , () => {
1152
+ cameraDragging = false
1153
+ app .stage .removeListener (' mousemove' , onMouseMove )
1154
+ })
1155
+ })
1156
+
1102
1157
// Resize
1103
1158
1104
1159
function onResize () {
0 commit comments