Skip to content

Commit

Permalink
fix: fixed double detection on swipe
Browse files Browse the repository at this point in the history
  • Loading branch information
mbret committed Aug 19, 2024
1 parent 41af48b commit 17471d8
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 41 deletions.
17 changes: 0 additions & 17 deletions packages/enhancer-gestures/src/gestures/pan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,10 @@ export const registerPan = ({
unhandledEvent$: Subject<GestureEvent>
settingsManager: GesturesSettingsManager
}) => {
// let initialTargetBodyUserSelectValue: string | undefined = undefined

const gestures$ = recognizer.events$.pipe(
withLatestFrom(settingsManager.values$),
filter(([, { panNavigation }]) => panNavigation === "pan"),
tap(([event]) => {
const target = event?.event.target as null | undefined | HTMLElement
const targetDocument: Document | null | undefined = target?.ownerDocument
const targetBody = targetDocument?.body
// const { computedPageTurnDirection } = reader.settings.values

if (reader.zoom.isZooming) return

if (event.type === `panStart`) {
Expand All @@ -37,24 +30,14 @@ export const registerPan = ({
if (event.delay > DELAY_IGNORE_PAN) return

reader?.navigation.moveTo({ x: 0, y: 0 }, { start: true })

if (targetBody) {
// initialTargetBodyUserSelectValue = targetBody.style.userSelect
// targetBody.style.userSelect = `none`
}
}

if (event.type === `panMove`) {
reader?.navigation.moveTo({ x: event.deltaX, y: event.deltaY })
}

// used to ensure we ignore false positive on firefox
if (event.type === `panEnd`) {
reader?.navigation.moveTo({ x: event.deltaX, y: event.deltaY }, { final: true })

if (targetBody) {
// targetBody.style.userSelect = initialTargetBodyUserSelectValue ?? ``
}
}
}),
)
Expand Down
49 changes: 25 additions & 24 deletions packages/enhancer-gestures/src/gestures/swipe.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { HookManager, Reader } from "@prose-reader/core"
import { Subject, filter, switchMap, tap } from "rxjs"
import { EMPTY, Subject, filter, switchMap, tap } from "rxjs"
import { GestureEvent, GestureRecognizable, Hook } from "../types"
import { GesturesSettingsManager } from "../SettingsManager"

Expand All @@ -15,30 +15,31 @@ export const registerSwipe = ({
settingsManager: GesturesSettingsManager
}) => {
const gestures$ = settingsManager.values$.pipe(
filter(({ panNavigation }) => panNavigation === "swipe"),
switchMap(() =>
recognizable.events$.pipe(
filter((event) => event.type === "swipe"),
tap((event) => {
const { computedPageTurnDirection } = reader.settings.values
switchMap(({ panNavigation }) =>
panNavigation !== "swipe"
? EMPTY
: recognizable.events$.pipe(
filter((event) => event.type === "swipe"),
tap((event) => {
const { computedPageTurnDirection } = reader.settings.values

if (computedPageTurnDirection === "vertical") {
if (event.velocityY < -0.5) {
reader?.navigation.turnRight()
}
if (event.velocityY > 0.5) {
reader?.navigation.turnLeft()
}
} else {
if (event.velocityX < -0.5) {
reader?.navigation.turnRight()
}
if (event.velocityX > 0.5) {
reader?.navigation.turnLeft()
}
}
}),
),
if (computedPageTurnDirection === "vertical") {
if (event.velocityY < -0.5) {
reader?.navigation.turnRight()
}
if (event.velocityY > 0.5) {
reader?.navigation.turnLeft()
}
} else {
if (event.velocityX < -0.5) {
reader?.navigation.turnRight()
}
if (event.velocityX > 0.5) {
reader?.navigation.turnLeft()
}
}
}),
),
),
)

Expand Down

0 comments on commit 17471d8

Please sign in to comment.