Fix useFrameStampPositionRef (#209)

This commit is contained in:
Andrew Prifer 2022-06-10 17:56:35 +02:00 committed by GitHub
parent 34c7b06baf
commit f2673b91fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 16 deletions

View file

@ -481,11 +481,9 @@ function useDragForAggregateKeyframeDot(
debugName: 'AggregateKeyframeDot/useDragKeyframe',
onDragStart(event) {
logger._debug('onDragStart', {target: event.target})
console.log(event.target)
const positionToFind = Number((event.target as HTMLElement).dataset.pos)
const props = getPropsForPosition(positionToFind)
if (!props) {
console.log('exit')
logger._debug('no props found for ', {positionToFind})
return false
}

View file

@ -130,28 +130,31 @@ export const useLockFrameStampPositionRef = () => {
useLayoutEffect(() => {
return () => {
lockRef.current!.unlock()
lockRef.current?.unlock()
}
}, [val])
}, [])
return useMemo(() => {
let prevShouldLock: false | {pos: number} = false
let prevLock: {shouldLock: boolean; pos: number} | undefined = undefined
return (shouldLock: boolean, posValue: number) => {
if (shouldLock === prevShouldLock) return
// Do if shouldLock changed
if (prevLock?.shouldLock !== shouldLock) {
if (shouldLock) {
if (!prevShouldLock) {
lockRef.current = getLock()
lockRef.current.set(posValue)
prevShouldLock = {pos: posValue}
} else if (prevShouldLock.pos !== posValue) {
} else {
lockRef.current?.unlock()
}
}
// Do if position changed
if (prevLock?.pos !== posValue) {
if (shouldLock) {
lockRef.current?.set(posValue)
} else {
// all the same params
}
} else {
lockRef.current!.unlock()
prevShouldLock = false
}
// Set arguments we are going to diff against next time
prevLock = {shouldLock, pos: posValue}
}
}, [getLock])
}