Skip to content

Commit 9333d8d

Browse files
committed
feat(timeline): horizontal scroll
1 parent 0d8f3f7 commit 9333d8d

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

packages/app-frontend/src/features/timeline/TimelineView.vue

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,17 +270,18 @@ export default {
270270
watch(startTime, () => queueCameraUpdate())
271271
watch(endTime, () => queueCameraUpdate())
272272
273-
// Zoom
274-
275273
/**
276274
* @param {MouseWheelEvent} event
277275
*/
278276
function onMouseWheel (event) {
279-
if (event.ctrlKey) {
277+
const size = endTime.value - startTime.value
278+
const viewWidth = wrapper.value.offsetWidth
279+
280+
if (event.ctrlKey || event.metaKey) {
281+
// Zoom
280282
event.preventDefault()
281283
282-
const size = endTime.value - startTime.value
283-
const centerRatio = event.offsetX / wrapper.value.offsetWidth
284+
const centerRatio = event.offsetX / viewWidth
284285
const center = size * centerRatio + startTime.value
285286
286287
let newSize = size + event.deltaY * 4
@@ -298,6 +299,19 @@ export default {
298299
}
299300
startTime.value = start
300301
endTime.value = end
302+
} else {
303+
if (event.deltaX !== 0) {
304+
// Horizontal scroll
305+
const delta = event.deltaX / viewWidth * size
306+
let start = startTime.value += delta
307+
if (start < minTime.value) {
308+
start = minTime.value
309+
} else if (start + size >= maxTime.value) {
310+
start = maxTime.value - size
311+
}
312+
startTime.value = start
313+
endTime.value = start + size
314+
}
301315
}
302316
}
303317

0 commit comments

Comments
 (0)