Selaa lähdekoodia

feat: zoom factor constant

Konstantinos Kaloutas 3 vuotta sitten
vanhempi
sitoutus
ab70d7fb4e

+ 2 - 0
tldraw/packages/core/src/constants.ts

@@ -15,6 +15,8 @@ export const FIT_TO_SCREEN_PADDING = 100
 
 export const BINDING_DISTANCE = 4
 
+export const ZOOM_UPDATE_FACTOR = 0.8
+
 export const GRID_SIZE = 8
 
 export const EMPTY_OBJECT: any = {}

+ 3 - 3
tldraw/packages/core/src/lib/TLViewport.ts

@@ -1,7 +1,7 @@
 import { Vec } from '@tldraw/vec'
 import { action, computed, makeObservable, observable } from 'mobx'
 import type { TLBounds } from '~types'
-import { FIT_TO_SCREEN_PADDING } from '~constants'
+import { FIT_TO_SCREEN_PADDING, ZOOM_UPDATE_FACTOR } from '~constants'
 
 export class TLViewport {
   constructor() {
@@ -84,7 +84,7 @@ export class TLViewport {
 
   zoomIn = (): this => {
     const { camera, bounds } = this
-    const zoom: number = Math.min(TLViewport.maxZoom, Math.ceil((camera.zoom * 100 + 1) / 25) / 4)
+    const zoom: number = Math.min(TLViewport.maxZoom, camera.zoom / ZOOM_UPDATE_FACTOR)
     const center = [bounds.width / 2, bounds.height / 2]
     const p0 = Vec.sub(Vec.div(center, camera.zoom), center)
     const p1 = Vec.sub(Vec.div(center, zoom), center)
@@ -93,7 +93,7 @@ export class TLViewport {
 
   zoomOut = (): this => {
     const { camera, bounds } = this
-    const zoom: number = Math.max(TLViewport.minZoom, Math.floor((camera.zoom * 100 - 1) / 25) / 4)
+    const zoom: number = Math.max(TLViewport.minZoom, camera.zoom * ZOOM_UPDATE_FACTOR)
     const center = [bounds.width / 2, bounds.height / 2]
     const p0 = Vec.sub(Vec.div(center, camera.zoom), center)
     const p1 = Vec.sub(Vec.div(center, zoom), center)