@@ -22,15 +22,14 @@ import { StyleSheet, View, LayoutChangeEvent } from 'react-native'
2222import useInnerProps , { getCustomEvent } from './getInnerListeners'
2323import useNodesRef , { HandlerRef } from './useNodesRef'
2424import { MovableAreaContext } from './context'
25- import { useTransformStyle , splitProps , splitStyle , HIDDEN_STYLE , wrapChildren , GestureHandler , flatGesture , extendObject , omit , useNavigation } from './utils'
25+ import { useTransformStyle , splitProps , splitStyle , HIDDEN_STYLE , wrapChildren , GestureHandler , flatGesture , extendObject , omit , useNavigation , useRunOnJSCallback } from './utils'
2626import { GestureDetector , Gesture , GestureTouchEvent , GestureStateChangeEvent , PanGestureHandlerEventPayload , PanGesture } from 'react-native-gesture-handler'
2727import Animated , {
2828 useSharedValue ,
2929 useAnimatedStyle ,
3030 withDecay ,
3131 runOnJS ,
3232 runOnUI ,
33- useAnimatedReaction ,
3433 withSpring
3534} from 'react-native-reanimated'
3635import { collectDataset , noop } from '@mpxjs/utils'
@@ -87,7 +86,6 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
8786 const layoutRef = useRef < any > ( { } )
8887 const changeSource = useRef < any > ( '' )
8988 const hasLayoutRef = useRef ( false )
90-
9189 const propsRef = useRef < any > ( { } )
9290 propsRef . current = ( props || { } ) as MovableViewProps
9391
@@ -208,7 +206,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
208206 const now = Date . now ( )
209207 if ( now - lastChangeTime . value >= changeThrottleTime ) {
210208 lastChangeTime . value = now
211- runOnJS ( handleTriggerChange ) ( { x, y, type } )
209+ runOnJS ( runOnJSCallback ) ( 'handleTriggerChange' , { x, y, type } )
212210 }
213211 } , [ changeThrottleTime ] )
214212
@@ -233,7 +231,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
233231 : newY
234232 }
235233 if ( bindchange ) {
236- runOnJS ( handleTriggerChange ) ( {
234+ runOnJS ( runOnJSCallback ) ( 'handleTriggerChange' , {
237235 x : newX ,
238236 y : newY ,
239237 type : 'setData'
@@ -408,13 +406,21 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
408406 catchtouchend && catchtouchend ( e )
409407 }
410408
409+ const runOnJSCallbackRef = useRef ( {
410+ handleTriggerChange,
411+ triggerStartOnJS,
412+ triggerMoveOnJS,
413+ triggerEndOnJS
414+ } )
415+ const runOnJSCallback = useRunOnJSCallback ( runOnJSCallbackRef )
416+
411417 const gesture = useMemo ( ( ) => {
412418 const handleTriggerMove = ( e : GestureTouchEvent ) => {
413419 'worklet'
414420 const hasTouchmove = ! ! bindhtouchmove || ! ! bindvtouchmove || ! ! bindtouchmove
415421 const hasCatchTouchmove = ! ! catchhtouchmove || ! ! catchvtouchmove || ! ! catchtouchmove
416422 if ( hasTouchmove || hasCatchTouchmove ) {
417- runOnJS ( triggerMoveOnJS ) ( {
423+ runOnJS ( runOnJSCallback ) ( 'triggerMoveOnJS' , {
418424 e,
419425 touchEvent : touchEvent . value ,
420426 hasTouchmove,
@@ -433,7 +439,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
433439 y : changedTouches . y
434440 }
435441 if ( bindtouchstart || catchtouchstart ) {
436- runOnJS ( triggerStartOnJS ) ( { e } )
442+ runOnJS ( runOnJSCallback ) ( 'triggerStartOnJS' , { e } )
437443 }
438444 } )
439445 . onStart ( ( ) => {
@@ -487,7 +493,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
487493 isFirstTouch . value = true
488494 isMoving . value = false
489495 if ( bindtouchend || catchtouchend ) {
490- runOnJS ( triggerEndOnJS ) ( { e } )
496+ runOnJS ( runOnJSCallback ) ( 'triggerEndOnJS' , { e } )
491497 }
492498 } )
493499 . onEnd ( ( e : GestureStateChangeEvent < PanGestureHandlerEventPayload > ) => {
@@ -515,7 +521,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
515521 : y
516522 }
517523 if ( bindchange ) {
518- runOnJS ( handleTriggerChange ) ( {
524+ runOnJS ( runOnJSCallback ) ( 'handleTriggerChange' , {
519525 x,
520526 y
521527 } )
@@ -532,7 +538,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
532538 } , ( ) => {
533539 xInertialMotion . value = false
534540 if ( bindchange ) {
535- runOnJS ( handleTriggerChange ) ( {
541+ runOnJS ( runOnJSCallback ) ( 'handleTriggerChange' , {
536542 x : offsetX . value ,
537543 y : offsetY . value
538544 } )
@@ -548,7 +554,7 @@ const _MovableView = forwardRef<HandlerRef<View, MovableViewProps>, MovableViewP
548554 } , ( ) => {
549555 yInertialMotion . value = false
550556 if ( bindchange ) {
551- runOnJS ( handleTriggerChange ) ( {
557+ runOnJS ( runOnJSCallback ) ( 'handleTriggerChange' , {
552558 x : offsetX . value ,
553559 y : offsetY . value
554560 } )
0 commit comments