react-native-reanimated 3.0.0-rc.2 → 3.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Common/cpp/AnimatedSensor/AnimatedSensorModule.cpp +3 -0
- package/Common/cpp/{headers/AnimatedSensor → AnimatedSensor}/AnimatedSensorModule.h +0 -0
- package/Common/cpp/Fabric/FabricUtils.cpp +1 -1
- package/Common/cpp/{headers/Fabric → Fabric}/FabricUtils.h +0 -0
- package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +2 -0
- package/Common/cpp/{headers/Fabric → Fabric}/ReanimatedUIManagerBinding.h +0 -0
- package/Common/cpp/{headers/Fabric → Fabric}/ShadowTreeCloner.h +1 -1
- package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +2 -0
- package/Common/cpp/{headers/LayoutAnimations → LayoutAnimations}/LayoutAnimationsProxy.h +0 -0
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +6 -1
- package/Common/cpp/{headers/NativeModules → NativeModules}/NativeReanimatedModule.h +5 -0
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +2 -0
- package/Common/cpp/{headers/NativeModules → NativeModules}/NativeReanimatedModuleSpec.h +1 -1
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +93 -0
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +125 -0
- package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +50 -0
- package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.h +27 -0
- package/Common/cpp/ReanimatedRuntime/RuntimeInitialization.md +194 -0
- package/Common/cpp/{headers/Registries → Registries}/EventHandlerRegistry.h +0 -0
- package/Common/cpp/Registries/MapperRegistry.cpp +3 -1
- package/Common/cpp/{headers/Registries → Registries}/MapperRegistry.h +0 -0
- package/Common/cpp/{headers/Registries → Registries}/NewestShadowNodesRegistry.h +0 -0
- package/Common/cpp/Registries/WorkletsCache.cpp +8 -1
- package/Common/cpp/{headers/Registries → Registries}/WorkletsCache.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/FrozenObject.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/HostFunctionHandler.h +0 -0
- package/Common/cpp/SharedItems/MutableValue.cpp +2 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/MutableValue.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/MutableValueSetterProxy.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/RemoteObject.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/RuntimeManager.h +0 -0
- package/Common/cpp/SharedItems/ShareableValue.cpp +6 -2
- package/Common/cpp/{headers/SharedItems → SharedItems}/ShareableValue.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/SharedParent.h +0 -0
- package/Common/cpp/{headers/SharedItems → SharedItems}/ValueWrapper.h +0 -0
- package/Common/cpp/{headers/SpecTools → SpecTools}/ErrorHandler.h +0 -0
- package/Common/cpp/{headers/Tools → Tools}/FeaturesConfig.h +0 -0
- package/Common/cpp/Tools/JSIStoreValueUser.cpp +2 -2
- package/Common/cpp/{headers/Tools → Tools}/JSIStoreValueUser.h +0 -0
- package/Common/cpp/{headers/Tools → Tools}/Mapper.h +0 -0
- package/Common/cpp/{headers/Tools → Tools}/PlatformDepMethodsHolder.h +0 -0
- package/Common/cpp/{headers/Tools → Tools}/ReanimatedHiddenHeaders.h +1 -1
- package/Common/cpp/{headers/Tools → Tools}/RuntimeDecorator.h +0 -0
- package/Common/cpp/{headers/Tools → Tools}/Scheduler.h +0 -0
- package/Common/cpp/Tools/SingleInstanceChecker.h +58 -0
- package/Common/cpp/{headers/Tools → Tools}/WorkletEventHandler.h +0 -0
- package/RNReanimated.podspec +21 -85
- package/android/CMakeLists.txt +62 -58
- package/android/build.gradle +421 -114
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +10 -8
- package/android/src/main/cpp/AndroidErrorHandler.cpp +3 -4
- package/android/src/main/cpp/{headers/AndroidErrorHandler.h → AndroidErrorHandler.h} +1 -4
- package/android/src/main/cpp/AndroidLogger.cpp +4 -1
- package/android/src/main/cpp/{headers/AndroidLogger.h → AndroidLogger.h} +0 -0
- package/android/src/main/cpp/{headers/AndroidScheduler.h → AndroidScheduler.h} +0 -0
- package/android/src/main/cpp/{headers/JNIHelper.h → JNIHelper.h} +0 -0
- package/android/src/main/cpp/{headers/LayoutAnimations.h → LayoutAnimations.h} +0 -0
- package/android/src/main/cpp/NativeProxy.cpp +12 -28
- package/android/src/main/cpp/{headers/NativeProxy.h → NativeProxy.h} +3 -1
- package/android/src/main/cpp/{headers/TurboModule.h → TurboModule.h} +0 -0
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThreadBase.java +72 -0
- package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +2 -1
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +1 -1
- package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +7 -7
- package/android/{rnVersionPatch/62 → src/reactNativeVersionPatch/UIImplementation/64/com/swmansion/reanimated}/layoutReanimation/ReanimatedUIImplementation.java +0 -0
- package/android/src/{main/java → reactNativeVersionPatch/UIImplementation/latest}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIImplementation.java +0 -0
- package/android/src/reactNativeVersionPatch/messageQueueThread/67/com/swmansion/reanimated/ReanimatedMessageQueueThread.java +12 -0
- package/android/src/reactNativeVersionPatch/messageQueueThread/latest/com/swmansion/reanimated/ReanimatedMessageQueueThread.java +12 -0
- package/android/{rnVersionPatch/62 → src/reactNativeVersionPatch/nativeHierarchyManager/62/com/swmansion/reanimated}/layoutReanimation/ReanimatedNativeHierarchyManager.java +0 -0
- package/android/src/{main/java → reactNativeVersionPatch/nativeHierarchyManager/latest}/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +0 -0
- package/ios/REAModule.mm +29 -0
- package/ios/keyboardObserver/REAKeyboardEventObserver.m +1 -1
- package/ios/native/NativeProxy.mm +12 -19
- package/ios/native/REAInitializer.h +2 -2
- package/ios/native/REAInitializer.mm +2 -2
- package/ios/native/REAMessageThread.h +22 -0
- package/ios/native/REAMessageThread.mm +38 -0
- package/ios/native/UIResponder+Reanimated.mm +1 -1
- package/lib/commonjs/createAnimatedComponent.js +2 -5
- package/lib/commonjs/createAnimatedComponent.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeMethods.js +67 -31
- package/lib/commonjs/reanimated2/NativeMethods.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/delay.js +0 -12
- package/lib/commonjs/reanimated2/animation/delay.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/repeat.js +0 -24
- package/lib/commonjs/reanimated2/animation/repeat.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/sequence.js +0 -12
- package/lib/commonjs/reanimated2/animation/sequence.js.map +1 -1
- package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js +4 -4
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +51 -19
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
- package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/index.js +8 -0
- package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useFrameCallback.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +33 -0
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -0
- package/lib/commonjs/reanimated2/utils.js +12 -3
- package/lib/commonjs/reanimated2/utils.js.map +1 -1
- package/lib/module/createAnimatedComponent.js +2 -5
- package/lib/module/createAnimatedComponent.js.map +1 -1
- package/lib/module/reanimated2/NativeMethods.js +68 -30
- package/lib/module/reanimated2/NativeMethods.js.map +1 -1
- package/lib/module/reanimated2/animation/delay.js +0 -10
- package/lib/module/reanimated2/animation/delay.js.map +1 -1
- package/lib/module/reanimated2/animation/repeat.js +0 -20
- package/lib/module/reanimated2/animation/repeat.js.map +1 -1
- package/lib/module/reanimated2/animation/sequence.js +0 -10
- package/lib/module/reanimated2/animation/sequence.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js +4 -4
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryJS.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +51 -19
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js.map +1 -1
- package/lib/module/reanimated2/globals.d.js.map +1 -1
- package/lib/module/reanimated2/hook/index.js +1 -0
- package/lib/module/reanimated2/hook/index.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedScrollHandler.js.map +1 -1
- package/lib/module/reanimated2/hook/useFrameCallback.js.map +1 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js +21 -0
- package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -0
- package/lib/module/reanimated2/utils.js +13 -3
- package/lib/module/reanimated2/utils.js.map +1 -1
- package/package.json +10 -6
- package/plugin.js +105 -47
- package/react-native-reanimated.d.ts +13 -9
- package/scripts/reanimated_utils.rb +77 -0
- package/src/createAnimatedComponent.tsx +2 -3
- package/src/reanimated2/NativeMethods.ts +91 -44
- package/src/reanimated2/animation/delay.ts +0 -12
- package/src/reanimated2/animation/repeat.ts +0 -25
- package/src/reanimated2/animation/sequence.ts +0 -13
- package/src/reanimated2/commonTypes.ts +9 -0
- package/src/reanimated2/frameCallback/FrameCallbackRegistryJS.ts +6 -9
- package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +78 -27
- package/src/reanimated2/globals.d.ts +56 -14
- package/src/reanimated2/hook/index.ts +1 -0
- package/src/reanimated2/hook/useAnimatedScrollHandler.ts +3 -1
- package/src/reanimated2/hook/useFrameCallback.ts +2 -1
- package/src/reanimated2/hook/useScrollViewOffset.ts +37 -0
- package/src/reanimated2/utils.ts +12 -5
- package/android/rnVersionPatch/63/layoutReanimation/ReanimatedUIImplementation.java +0 -68
- package/android/rnVersionPatch/64/layoutReanimation/ReanimatedUIImplementation.java +0 -68
- package/android/rnVersionPatch/65/.gitkeep +0 -0
- package/android/rnVersionPatch/66/.gitkeep +0 -0
- package/android/rnVersionPatch/67/.gitkeep +0 -0
- package/android/rnVersionPatch/68/.gitkeep +0 -0
- package/android/rnVersionPatch/backup/.gitkeep +0 -0
- package/android/src/main/java/com/swmansion/reanimated/AndroidErrorHandler.java +0 -8
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedJSIModulePackage.java +0 -29
|
@@ -12,48 +12,80 @@ const prepareUIRegistry = (0, _core.runOnUI)(() => {
|
|
|
12
12
|
|
|
13
13
|
const frameCallbackRegistry = {
|
|
14
14
|
frameCallbackRegistry: new Map(),
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
activeFrameCallbacks: new Set(),
|
|
16
|
+
previousFrameTimestamp: null,
|
|
17
17
|
|
|
18
18
|
runCallbacks() {
|
|
19
|
-
const loop =
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
const loop = timestamp => {
|
|
20
|
+
if (this.previousFrameTimestamp === null) {
|
|
21
|
+
this.previousFrameTimestamp = timestamp;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const delta = timestamp - this.previousFrameTimestamp;
|
|
25
|
+
this.activeFrameCallbacks.forEach(callbackId => {
|
|
26
|
+
const callbackDetails = this.frameCallbackRegistry.get(callbackId);
|
|
27
|
+
const {
|
|
28
|
+
startTime
|
|
29
|
+
} = callbackDetails;
|
|
30
|
+
|
|
31
|
+
if (startTime === null) {
|
|
32
|
+
// First frame
|
|
33
|
+
callbackDetails.startTime = timestamp;
|
|
34
|
+
callbackDetails.callback({
|
|
35
|
+
timestamp,
|
|
36
|
+
timeSincePreviousFrame: null,
|
|
37
|
+
timeSinceFirstFrame: 0
|
|
38
|
+
});
|
|
39
|
+
} else {
|
|
40
|
+
// Next frame
|
|
41
|
+
callbackDetails.callback({
|
|
42
|
+
timestamp,
|
|
43
|
+
timeSincePreviousFrame: delta,
|
|
44
|
+
timeSinceFirstFrame: timestamp - startTime
|
|
45
|
+
});
|
|
46
|
+
}
|
|
23
47
|
});
|
|
24
48
|
|
|
25
|
-
if (this.
|
|
49
|
+
if (this.activeFrameCallbacks.size > 0) {
|
|
50
|
+
this.previousFrameTimestamp = timestamp;
|
|
26
51
|
requestAnimationFrame(loop);
|
|
27
52
|
} else {
|
|
28
|
-
this.
|
|
53
|
+
this.previousFrameTimestamp = null;
|
|
29
54
|
}
|
|
30
|
-
};
|
|
55
|
+
}; // runCallback() should only be called after registering a callback,
|
|
56
|
+
// so if there is only one active callback, then it means that there were
|
|
57
|
+
// zero previously and the loop isn't running yet.
|
|
58
|
+
|
|
31
59
|
|
|
32
|
-
if (
|
|
60
|
+
if (this.activeFrameCallbacks.size === 1) {
|
|
33
61
|
requestAnimationFrame(loop);
|
|
34
|
-
this.isFrameCallbackRunning = true;
|
|
35
62
|
}
|
|
36
63
|
},
|
|
37
64
|
|
|
38
65
|
registerFrameCallback(callback, callbackId) {
|
|
39
|
-
this.frameCallbackRegistry.set(callbackId,
|
|
66
|
+
this.frameCallbackRegistry.set(callbackId, {
|
|
67
|
+
callback: callback,
|
|
68
|
+
startTime: null
|
|
69
|
+
});
|
|
40
70
|
},
|
|
41
71
|
|
|
42
|
-
unregisterFrameCallback(
|
|
43
|
-
this.manageStateFrameCallback(
|
|
44
|
-
this.frameCallbackRegistry.delete(
|
|
72
|
+
unregisterFrameCallback(callbackId) {
|
|
73
|
+
this.manageStateFrameCallback(callbackId, false);
|
|
74
|
+
this.frameCallbackRegistry.delete(callbackId);
|
|
45
75
|
},
|
|
46
76
|
|
|
47
|
-
manageStateFrameCallback(
|
|
48
|
-
if (
|
|
77
|
+
manageStateFrameCallback(callbackId, state) {
|
|
78
|
+
if (callbackId === -1) {
|
|
49
79
|
return;
|
|
50
80
|
}
|
|
51
81
|
|
|
52
82
|
if (state) {
|
|
53
|
-
this.
|
|
83
|
+
this.activeFrameCallbacks.add(callbackId);
|
|
54
84
|
this.runCallbacks();
|
|
55
85
|
} else {
|
|
56
|
-
this.
|
|
86
|
+
const callback = this.frameCallbackRegistry.get(callbackId);
|
|
87
|
+
callback.startTime = null;
|
|
88
|
+
this.activeFrameCallbacks.delete(callbackId);
|
|
57
89
|
}
|
|
58
90
|
}
|
|
59
91
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["prepareUIRegistry","runOnUI","frameCallbackRegistry","Map","
|
|
1
|
+
{"version":3,"names":["prepareUIRegistry","runOnUI","frameCallbackRegistry","Map","activeFrameCallbacks","Set","previousFrameTimestamp","runCallbacks","loop","timestamp","delta","forEach","callbackId","callbackDetails","get","startTime","callback","timeSincePreviousFrame","timeSinceFirstFrame","size","requestAnimationFrame","registerFrameCallback","set","unregisterFrameCallback","manageStateFrameCallback","delete","state","add","global","_frameCallbackRegistry"],"sources":["FrameCallbackRegistryUI.ts"],"sourcesContent":["import { runOnUI } from '../core';\n\ntype CallbackDetails = {\n callback: (frameInfo: FrameInfo) => void;\n startTime: number | null;\n};\n\nexport type FrameInfo = {\n timestamp: number;\n timeSincePreviousFrame: number | null;\n timeSinceFirstFrame: number;\n};\n\nexport interface FrameCallbackRegistryUI {\n frameCallbackRegistry: Map<number, CallbackDetails>;\n activeFrameCallbacks: Set<number>;\n previousFrameTimestamp: number | null;\n runCallbacks: () => void;\n registerFrameCallback: (\n callback: (frameInfo: FrameInfo) => void,\n callbackId: number\n ) => void;\n unregisterFrameCallback: (callbackId: number) => void;\n manageStateFrameCallback: (callbackId: number, state: boolean) => void;\n}\n\nexport const prepareUIRegistry = runOnUI(() => {\n 'worklet';\n\n const frameCallbackRegistry: FrameCallbackRegistryUI = {\n frameCallbackRegistry: new Map<number, CallbackDetails>(),\n activeFrameCallbacks: new Set<number>(),\n previousFrameTimestamp: null,\n\n runCallbacks() {\n const loop = (timestamp: number) => {\n if (this.previousFrameTimestamp === null) {\n this.previousFrameTimestamp = timestamp;\n }\n\n const delta = timestamp - this.previousFrameTimestamp;\n\n this.activeFrameCallbacks.forEach((callbackId: number) => {\n const callbackDetails = this.frameCallbackRegistry.get(callbackId)!;\n\n const { startTime } = callbackDetails;\n\n if (startTime === null) {\n // First frame\n callbackDetails.startTime = timestamp;\n\n callbackDetails.callback({\n timestamp,\n timeSincePreviousFrame: null,\n timeSinceFirstFrame: 0,\n });\n } else {\n // Next frame\n callbackDetails.callback({\n timestamp,\n timeSincePreviousFrame: delta,\n timeSinceFirstFrame: timestamp - startTime,\n });\n }\n });\n\n if (this.activeFrameCallbacks.size > 0) {\n this.previousFrameTimestamp = timestamp;\n requestAnimationFrame(loop);\n } else {\n this.previousFrameTimestamp = null;\n }\n };\n\n // runCallback() should only be called after registering a callback,\n // so if there is only one active callback, then it means that there were\n // zero previously and the loop isn't running yet.\n if (this.activeFrameCallbacks.size === 1) {\n requestAnimationFrame(loop);\n }\n },\n\n registerFrameCallback(\n callback: (frameInfo: FrameInfo) => void,\n callbackId: number\n ) {\n this.frameCallbackRegistry.set(callbackId, {\n callback: callback,\n startTime: null,\n });\n },\n\n unregisterFrameCallback(callbackId: number) {\n this.manageStateFrameCallback(callbackId, false);\n this.frameCallbackRegistry.delete(callbackId);\n },\n\n manageStateFrameCallback(callbackId: number, state: boolean) {\n if (callbackId === -1) {\n return;\n }\n if (state) {\n this.activeFrameCallbacks.add(callbackId);\n this.runCallbacks();\n } else {\n const callback = this.frameCallbackRegistry.get(callbackId)!;\n callback.startTime = null;\n\n this.activeFrameCallbacks.delete(callbackId);\n }\n },\n };\n\n global._frameCallbackRegistry = frameCallbackRegistry;\n});\n"],"mappings":";;;;;;;AAAA;;AA0BO,MAAMA,iBAAiB,GAAG,IAAAC,aAAA,EAAQ,MAAM;EAC7C;;EAEA,MAAMC,qBAA8C,GAAG;IACrDA,qBAAqB,EAAE,IAAIC,GAAJ,EAD8B;IAErDC,oBAAoB,EAAE,IAAIC,GAAJ,EAF+B;IAGrDC,sBAAsB,EAAE,IAH6B;;IAKrDC,YAAY,GAAG;MACb,MAAMC,IAAI,GAAIC,SAAD,IAAuB;QAClC,IAAI,KAAKH,sBAAL,KAAgC,IAApC,EAA0C;UACxC,KAAKA,sBAAL,GAA8BG,SAA9B;QACD;;QAED,MAAMC,KAAK,GAAGD,SAAS,GAAG,KAAKH,sBAA/B;QAEA,KAAKF,oBAAL,CAA0BO,OAA1B,CAAmCC,UAAD,IAAwB;UACxD,MAAMC,eAAe,GAAG,KAAKX,qBAAL,CAA2BY,GAA3B,CAA+BF,UAA/B,CAAxB;UAEA,MAAM;YAAEG;UAAF,IAAgBF,eAAtB;;UAEA,IAAIE,SAAS,KAAK,IAAlB,EAAwB;YACtB;YACAF,eAAe,CAACE,SAAhB,GAA4BN,SAA5B;YAEAI,eAAe,CAACG,QAAhB,CAAyB;cACvBP,SADuB;cAEvBQ,sBAAsB,EAAE,IAFD;cAGvBC,mBAAmB,EAAE;YAHE,CAAzB;UAKD,CATD,MASO;YACL;YACAL,eAAe,CAACG,QAAhB,CAAyB;cACvBP,SADuB;cAEvBQ,sBAAsB,EAAEP,KAFD;cAGvBQ,mBAAmB,EAAET,SAAS,GAAGM;YAHV,CAAzB;UAKD;QACF,CAtBD;;QAwBA,IAAI,KAAKX,oBAAL,CAA0Be,IAA1B,GAAiC,CAArC,EAAwC;UACtC,KAAKb,sBAAL,GAA8BG,SAA9B;UACAW,qBAAqB,CAACZ,IAAD,CAArB;QACD,CAHD,MAGO;UACL,KAAKF,sBAAL,GAA8B,IAA9B;QACD;MACF,CArCD,CADa,CAwCb;MACA;MACA;;;MACA,IAAI,KAAKF,oBAAL,CAA0Be,IAA1B,KAAmC,CAAvC,EAA0C;QACxCC,qBAAqB,CAACZ,IAAD,CAArB;MACD;IACF,CAnDoD;;IAqDrDa,qBAAqB,CACnBL,QADmB,EAEnBJ,UAFmB,EAGnB;MACA,KAAKV,qBAAL,CAA2BoB,GAA3B,CAA+BV,UAA/B,EAA2C;QACzCI,QAAQ,EAAEA,QAD+B;QAEzCD,SAAS,EAAE;MAF8B,CAA3C;IAID,CA7DoD;;IA+DrDQ,uBAAuB,CAACX,UAAD,EAAqB;MAC1C,KAAKY,wBAAL,CAA8BZ,UAA9B,EAA0C,KAA1C;MACA,KAAKV,qBAAL,CAA2BuB,MAA3B,CAAkCb,UAAlC;IACD,CAlEoD;;IAoErDY,wBAAwB,CAACZ,UAAD,EAAqBc,KAArB,EAAqC;MAC3D,IAAId,UAAU,KAAK,CAAC,CAApB,EAAuB;QACrB;MACD;;MACD,IAAIc,KAAJ,EAAW;QACT,KAAKtB,oBAAL,CAA0BuB,GAA1B,CAA8Bf,UAA9B;QACA,KAAKL,YAAL;MACD,CAHD,MAGO;QACL,MAAMS,QAAQ,GAAG,KAAKd,qBAAL,CAA2BY,GAA3B,CAA+BF,UAA/B,CAAjB;QACAI,QAAQ,CAACD,SAAT,GAAqB,IAArB;QAEA,KAAKX,oBAAL,CAA0BqB,MAA1B,CAAiCb,UAAjC;MACD;IACF;;EAjFoD,CAAvD;EAoFAgB,MAAM,CAACC,sBAAP,GAAgC3B,qBAAhC;AACD,CAxFgC,CAA1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import type {\n AnimatedStyle,\n StyleProps,\n MeasuredDimensions,\n} from './commonTypes';\nimport type { ReanimatedConsole } from './core';\nimport type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';\nimport type { ShadowNodeWrapper } from './hook/commonTypes';\nimport type { NativeReanimated } from './NativeReanimated/NativeReanimated';\n\ndeclare global {\n const _WORKLET: boolean;\n const _IS_FABRIC: boolean;\n const _frameTimestamp: number | null;\n const _eventTimestamp: number;\n const __reanimatedModuleProxy: NativeReanimated;\n const _setGlobalConsole: (console?: ReanimatedConsole) => void;\n const _log: (s: string) => void;\n const _getCurrentTime: () => number;\n const _stopObservingProgress: (tag: number, flag: boolean) => void;\n const _startObservingProgress: (\n tag: number,\n flag: { value: boolean; _value: boolean }\n ) => void;\n const _setGestureState: (handlerTag: number, newState: number) => void;\n const _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n const _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n const _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n const _measure: (viewTag: number) => MeasuredDimensions;\n const _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n const _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n const _chronoNow: () => number;\n const performance: { now: () => number };\n const LayoutAnimationRepository: {\n configs: Record<string, unknown>;\n registerConfig(tag: number, config: Record<string, unknown>): void;\n removeConfig(tag: number): void;\n startAnimationForTag(tag: number, type: string, yogaValues: unknown): void;\n };\n const ReanimatedDataMock: {\n now: () => number;\n };\n const _frameCallbackRegistry: FrameCallbackRegistryUI;\n\n namespace NodeJS {\n interface Global {\n _WORKLET: boolean;\n _IS_FABRIC: boolean;\n _frameTimestamp: number | null;\n _eventTimestamp: number;\n __reanimatedModuleProxy: NativeReanimated;\n _setGlobalConsole: (console?: ReanimatedConsole) => void;\n _log: (s: string) => void;\n _getCurrentTime: () => number;\n _stopObservingProgress: (tag: number, flag: boolean) => void;\n _startObservingProgress: (\n tag: number,\n flag: { value: boolean; _value: boolean }\n ) => void;\n _setGestureState: (handlerTag: number, newState: number) => void;\n _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n _measure: (viewTag: number) => MeasuredDimensions;\n _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n _chronoNow: () => number;\n performance: { now: () => number };\n LayoutAnimationRepository: {\n configs: Record<string, unknown>;\n registerConfig(tag: number, config: Record<string, unknown>): void;\n removeConfig(tag: number): void;\n startAnimationForTag(\n tag: number,\n type: string,\n yogaValues: unknown\n ): void;\n };\n ReanimatedDataMock: {\n now: () => number;\n };\n _frameCallbackRegistry: FrameCallbackRegistryUI;\n }\n }\n}\n"],"mappings":""}
|
|
@@ -81,6 +81,12 @@ Object.defineProperty(exports, "useHandler", {
|
|
|
81
81
|
return _Hooks.useHandler;
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
|
+
Object.defineProperty(exports, "useScrollViewOffset", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return _useScrollViewOffset.useScrollViewOffset;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
84
90
|
Object.defineProperty(exports, "useSharedValue", {
|
|
85
91
|
enumerable: true,
|
|
86
92
|
get: function () {
|
|
@@ -115,4 +121,6 @@ var _useAnimatedSensor = require("./useAnimatedSensor");
|
|
|
115
121
|
var _useFrameCallback = require("./useFrameCallback");
|
|
116
122
|
|
|
117
123
|
var _useAnimatedKeyboard = require("./useAnimatedKeyboard");
|
|
124
|
+
|
|
125
|
+
var _useScrollViewOffset = require("./useScrollViewOffset");
|
|
118
126
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type { DependencyList } from './commonTypes';\nexport {\n useAnimatedProps,\n useEvent,\n useHandler,\n useWorkletCallback,\n} from './Hooks';\nexport { useSharedValue } from './useSharedValue';\nexport { useAnimatedStyle } from './useAnimatedStyle';\nexport type { AnimatedStyleResult } from './useAnimatedStyle';\nexport { useAnimatedGestureHandler } from './useAnimatedGestureHandler';\nexport type {\n GestureHandlerEvent,\n GestureHandlers,\n} from './useAnimatedGestureHandler';\nexport { useAnimatedReaction } from './useAnimatedReaction';\nexport type { AnimatedReactionWorkletFunction } from './useAnimatedReaction';\nexport { useAnimatedRef } from './useAnimatedRef';\nexport { useAnimatedScrollHandler } from './useAnimatedScrollHandler';\nexport type { ScrollHandler, ScrollHandlers } from './useAnimatedScrollHandler';\nexport { useDerivedValue } from './useDerivedValue';\nexport type { DerivedValue } from './useDerivedValue';\nexport { useAnimatedSensor, SensorType } from './useAnimatedSensor';\nexport { useFrameCallback } from './useFrameCallback';\nexport type { FrameCallback } from './useFrameCallback';\nexport { useAnimatedKeyboard } from './useAnimatedKeyboard';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type { DependencyList } from './commonTypes';\nexport {\n useAnimatedProps,\n useEvent,\n useHandler,\n useWorkletCallback,\n} from './Hooks';\nexport { useSharedValue } from './useSharedValue';\nexport { useAnimatedStyle } from './useAnimatedStyle';\nexport type { AnimatedStyleResult } from './useAnimatedStyle';\nexport { useAnimatedGestureHandler } from './useAnimatedGestureHandler';\nexport type {\n GestureHandlerEvent,\n GestureHandlers,\n} from './useAnimatedGestureHandler';\nexport { useAnimatedReaction } from './useAnimatedReaction';\nexport type { AnimatedReactionWorkletFunction } from './useAnimatedReaction';\nexport { useAnimatedRef } from './useAnimatedRef';\nexport { useAnimatedScrollHandler } from './useAnimatedScrollHandler';\nexport type { ScrollHandler, ScrollHandlers } from './useAnimatedScrollHandler';\nexport { useDerivedValue } from './useDerivedValue';\nexport type { DerivedValue } from './useDerivedValue';\nexport { useAnimatedSensor, SensorType } from './useAnimatedSensor';\nexport { useFrameCallback } from './useFrameCallback';\nexport type { FrameCallback } from './useFrameCallback';\nexport { useAnimatedKeyboard } from './useAnimatedKeyboard';\nexport { useScrollViewOffset } from './useScrollViewOffset';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAMA;;AACA;;AAEA;;AAKA;;AAEA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useAnimatedScrollHandler","handlers","dependencies","scrollHandlers","onScroll","context","doDependenciesDiffer","useHandler","subscribeForEvents","onBeginDrag","undefined","push","onEndDrag","onMomentumBegin","onMomentumEnd","useEvent","event","eventName","endsWith"],"sources":["useAnimatedScrollHandler.ts"],"sourcesContent":["import { RefObject } from 'react';\nimport { NativeScrollEvent } from 'react-native';\nimport { Context, NativeEvent, WorkletFunction } from '../commonTypes';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { DependencyList } from './commonTypes';\nimport { useEvent, useHandler } from './Hooks';\n\nexport interface ScrollHandler<TContext extends Context>\n extends WorkletFunction {\n (event: NativeScrollEvent, context?: TContext): void;\n}\n\
|
|
1
|
+
{"version":3,"names":["useAnimatedScrollHandler","handlers","dependencies","scrollHandlers","onScroll","context","doDependenciesDiffer","useHandler","subscribeForEvents","onBeginDrag","undefined","push","onEndDrag","onMomentumBegin","onMomentumEnd","useEvent","event","eventName","endsWith"],"sources":["useAnimatedScrollHandler.ts"],"sourcesContent":["import { RefObject } from 'react';\nimport { NativeScrollEvent } from 'react-native';\nimport { Context, NativeEvent, WorkletFunction } from '../commonTypes';\nimport WorkletEventHandler from '../WorkletEventHandler';\nimport { DependencyList } from './commonTypes';\nimport { useEvent, useHandler } from './Hooks';\n\nexport interface ScrollHandler<TContext extends Context>\n extends WorkletFunction {\n (event: NativeScrollEvent, context?: TContext): void;\n}\n\nexport interface ScrollEvent\n extends NativeScrollEvent,\n NativeEvent<ScrollEvent> {\n eventName: string;\n}\nexport interface ScrollHandlers<TContext extends Context> {\n [key: string]: ScrollHandler<TContext> | undefined;\n onScroll?: ScrollHandler<TContext>;\n onBeginDrag?: ScrollHandler<TContext>;\n onEndDrag?: ScrollHandler<TContext>;\n onMomentumBegin?: ScrollHandler<TContext>;\n onMomentumEnd?: ScrollHandler<TContext>;\n}\n\nexport function useAnimatedScrollHandler<TContext extends Context>(\n handlers: ScrollHandlers<TContext> | ScrollHandler<TContext>,\n dependencies?: DependencyList\n): RefObject<WorkletEventHandler<ScrollEvent>> {\n // case when handlers is a function\n const scrollHandlers: ScrollHandlers<TContext> =\n typeof handlers === 'function' ? { onScroll: handlers } : handlers;\n const { context, doDependenciesDiffer } = useHandler<ScrollEvent, TContext>(\n scrollHandlers,\n dependencies\n );\n\n // build event subscription array\n const subscribeForEvents = ['onScroll'];\n if (scrollHandlers.onBeginDrag !== undefined) {\n subscribeForEvents.push('onScrollBeginDrag');\n }\n if (scrollHandlers.onEndDrag !== undefined) {\n subscribeForEvents.push('onScrollEndDrag');\n }\n if (scrollHandlers.onMomentumBegin !== undefined) {\n subscribeForEvents.push('onMomentumScrollBegin');\n }\n if (scrollHandlers.onMomentumEnd !== undefined) {\n subscribeForEvents.push('onMomentumScrollEnd');\n }\n\n return useEvent<ScrollEvent>(\n (event: ScrollEvent) => {\n 'worklet';\n const {\n onScroll,\n onBeginDrag,\n onEndDrag,\n onMomentumBegin,\n onMomentumEnd,\n } = scrollHandlers;\n if (onScroll && event.eventName.endsWith('onScroll')) {\n onScroll(event, context);\n } else if (onBeginDrag && event.eventName.endsWith('onScrollBeginDrag')) {\n onBeginDrag(event, context);\n } else if (onEndDrag && event.eventName.endsWith('onScrollEndDrag')) {\n onEndDrag(event, context);\n } else if (\n onMomentumBegin &&\n event.eventName.endsWith('onMomentumScrollBegin')\n ) {\n onMomentumBegin(event, context);\n } else if (\n onMomentumEnd &&\n event.eventName.endsWith('onMomentumScrollEnd')\n ) {\n onMomentumEnd(event, context);\n }\n },\n subscribeForEvents,\n doDependenciesDiffer\n );\n}\n"],"mappings":";;;;;;;AAKA;;AAqBO,SAASA,wBAAT,CACLC,QADK,EAELC,YAFK,EAGwC;EAC7C;EACA,MAAMC,cAAwC,GAC5C,OAAOF,QAAP,KAAoB,UAApB,GAAiC;IAAEG,QAAQ,EAAEH;EAAZ,CAAjC,GAA0DA,QAD5D;EAEA,MAAM;IAAEI,OAAF;IAAWC;EAAX,IAAoC,IAAAC,iBAAA,EACxCJ,cADwC,EAExCD,YAFwC,CAA1C,CAJ6C,CAS7C;;EACA,MAAMM,kBAAkB,GAAG,CAAC,UAAD,CAA3B;;EACA,IAAIL,cAAc,CAACM,WAAf,KAA+BC,SAAnC,EAA8C;IAC5CF,kBAAkB,CAACG,IAAnB,CAAwB,mBAAxB;EACD;;EACD,IAAIR,cAAc,CAACS,SAAf,KAA6BF,SAAjC,EAA4C;IAC1CF,kBAAkB,CAACG,IAAnB,CAAwB,iBAAxB;EACD;;EACD,IAAIR,cAAc,CAACU,eAAf,KAAmCH,SAAvC,EAAkD;IAChDF,kBAAkB,CAACG,IAAnB,CAAwB,uBAAxB;EACD;;EACD,IAAIR,cAAc,CAACW,aAAf,KAAiCJ,SAArC,EAAgD;IAC9CF,kBAAkB,CAACG,IAAnB,CAAwB,qBAAxB;EACD;;EAED,OAAO,IAAAI,eAAA,EACJC,KAAD,IAAwB;IACtB;;IACA,MAAM;MACJZ,QADI;MAEJK,WAFI;MAGJG,SAHI;MAIJC,eAJI;MAKJC;IALI,IAMFX,cANJ;;IAOA,IAAIC,QAAQ,IAAIY,KAAK,CAACC,SAAN,CAAgBC,QAAhB,CAAyB,UAAzB,CAAhB,EAAsD;MACpDd,QAAQ,CAACY,KAAD,EAAQX,OAAR,CAAR;IACD,CAFD,MAEO,IAAII,WAAW,IAAIO,KAAK,CAACC,SAAN,CAAgBC,QAAhB,CAAyB,mBAAzB,CAAnB,EAAkE;MACvET,WAAW,CAACO,KAAD,EAAQX,OAAR,CAAX;IACD,CAFM,MAEA,IAAIO,SAAS,IAAII,KAAK,CAACC,SAAN,CAAgBC,QAAhB,CAAyB,iBAAzB,CAAjB,EAA8D;MACnEN,SAAS,CAACI,KAAD,EAAQX,OAAR,CAAT;IACD,CAFM,MAEA,IACLQ,eAAe,IACfG,KAAK,CAACC,SAAN,CAAgBC,QAAhB,CAAyB,uBAAzB,CAFK,EAGL;MACAL,eAAe,CAACG,KAAD,EAAQX,OAAR,CAAf;IACD,CALM,MAKA,IACLS,aAAa,IACbE,KAAK,CAACC,SAAN,CAAgBC,QAAhB,CAAyB,qBAAzB,CAFK,EAGL;MACAJ,aAAa,CAACE,KAAD,EAAQX,OAAR,CAAb;IACD;EACF,CA3BI,EA4BLG,kBA5BK,EA6BLF,oBA7BK,CAAP;AA+BD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["frameCallbackRegistry","FrameCallbackRegistryJS","useFrameCallback","callback","autostart","ref","useRef","setActive","isActive","manageStateFrameCallback","current","callbackId","useEffect","registerFrameCallback","unregisterFrameCallback"],"sources":["useFrameCallback.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport FrameCallbackRegistryJS from '../frameCallback/FrameCallbackRegistryJS';\n\nexport type FrameCallback = {\n setActive: (isActive: boolean) => void;\n isActive: boolean;\n callbackId: number;\n};\nconst frameCallbackRegistry = new FrameCallbackRegistryJS();\n\nexport function useFrameCallback(\n callback: () => void,\n autostart = true\n): FrameCallback {\n const ref = useRef<FrameCallback>({\n setActive: (isActive: boolean) => {\n frameCallbackRegistry.manageStateFrameCallback(\n ref.current.callbackId,\n isActive\n );\n ref.current.isActive = isActive;\n },\n isActive: autostart,\n callbackId: -1,\n });\n\n useEffect(() => {\n ref.current.callbackId =\n frameCallbackRegistry.registerFrameCallback(callback);\n ref.current.setActive(ref.current.isActive);\n\n return () => {\n frameCallbackRegistry.unregisterFrameCallback(ref.current.callbackId);\n ref.current.callbackId = -1;\n };\n }, [callback, autostart]);\n\n return ref.current;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;
|
|
1
|
+
{"version":3,"names":["frameCallbackRegistry","FrameCallbackRegistryJS","useFrameCallback","callback","autostart","ref","useRef","setActive","isActive","manageStateFrameCallback","current","callbackId","useEffect","registerFrameCallback","unregisterFrameCallback"],"sources":["useFrameCallback.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport FrameCallbackRegistryJS from '../frameCallback/FrameCallbackRegistryJS';\nimport { FrameInfo } from '../frameCallback/FrameCallbackRegistryUI';\n\nexport type FrameCallback = {\n setActive: (isActive: boolean) => void;\n isActive: boolean;\n callbackId: number;\n};\nconst frameCallbackRegistry = new FrameCallbackRegistryJS();\n\nexport function useFrameCallback(\n callback: (frameInfo: FrameInfo) => void,\n autostart = true\n): FrameCallback {\n const ref = useRef<FrameCallback>({\n setActive: (isActive: boolean) => {\n frameCallbackRegistry.manageStateFrameCallback(\n ref.current.callbackId,\n isActive\n );\n ref.current.isActive = isActive;\n },\n isActive: autostart,\n callbackId: -1,\n });\n\n useEffect(() => {\n ref.current.callbackId =\n frameCallbackRegistry.registerFrameCallback(callback);\n ref.current.setActive(ref.current.isActive);\n\n return () => {\n frameCallbackRegistry.unregisterFrameCallback(ref.current.callbackId);\n ref.current.callbackId = -1;\n };\n }, [callback, autostart]);\n\n return ref.current;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQA,MAAMA,qBAAqB,GAAG,IAAIC,gCAAJ,EAA9B;;AAEO,SAASC,gBAAT,CACLC,QADK,EAGU;EAAA,IADfC,SACe,uEADH,IACG;EACf,MAAMC,GAAG,GAAG,IAAAC,aAAA,EAAsB;IAChCC,SAAS,EAAGC,QAAD,IAAuB;MAChCR,qBAAqB,CAACS,wBAAtB,CACEJ,GAAG,CAACK,OAAJ,CAAYC,UADd,EAEEH,QAFF;MAIAH,GAAG,CAACK,OAAJ,CAAYF,QAAZ,GAAuBA,QAAvB;IACD,CAP+B;IAQhCA,QAAQ,EAAEJ,SARsB;IAShCO,UAAU,EAAE,CAAC;EATmB,CAAtB,CAAZ;EAYA,IAAAC,gBAAA,EAAU,MAAM;IACdP,GAAG,CAACK,OAAJ,CAAYC,UAAZ,GACEX,qBAAqB,CAACa,qBAAtB,CAA4CV,QAA5C,CADF;IAEAE,GAAG,CAACK,OAAJ,CAAYH,SAAZ,CAAsBF,GAAG,CAACK,OAAJ,CAAYF,QAAlC;IAEA,OAAO,MAAM;MACXR,qBAAqB,CAACc,uBAAtB,CAA8CT,GAAG,CAACK,OAAJ,CAAYC,UAA1D;MACAN,GAAG,CAACK,OAAJ,CAAYC,UAAZ,GAAyB,CAAC,CAA1B;IACD,CAHD;EAID,CATD,EASG,CAACR,QAAD,EAAWC,SAAX,CATH;EAWA,OAAOC,GAAG,CAACK,OAAX;AACD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useScrollViewOffset = useScrollViewOffset;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
|
|
12
|
+
var _utils = require("./utils");
|
|
13
|
+
|
|
14
|
+
var _useSharedValue = require("./useSharedValue");
|
|
15
|
+
|
|
16
|
+
const subscribeForEvents = ['onScroll', 'onScrollBeginDrag', 'onScrollEndDrag', 'onMomentumScrollBegin', 'onMomentumScrollEnd'];
|
|
17
|
+
|
|
18
|
+
function useScrollViewOffset(aref) {
|
|
19
|
+
const offsetRef = (0, _react.useRef)((0, _useSharedValue.useSharedValue)(0));
|
|
20
|
+
const event = (0, _utils.useEvent)(event => {
|
|
21
|
+
'worklet';
|
|
22
|
+
|
|
23
|
+
offsetRef.current.value = event.contentOffset.x === 0 ? event.contentOffset.y : event.contentOffset.x;
|
|
24
|
+
}, subscribeForEvents);
|
|
25
|
+
(0, _react.useEffect)(() => {
|
|
26
|
+
var _event$current;
|
|
27
|
+
|
|
28
|
+
const viewTag = (0, _reactNative.findNodeHandle)(aref.current);
|
|
29
|
+
(_event$current = event.current) === null || _event$current === void 0 ? void 0 : _event$current.registerForEvents(viewTag);
|
|
30
|
+
}, [aref.current]);
|
|
31
|
+
return offsetRef.current;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=useScrollViewOffset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["subscribeForEvents","useScrollViewOffset","aref","offsetRef","useRef","useSharedValue","event","useEvent","current","value","contentOffset","x","y","useEffect","viewTag","findNodeHandle","registerForEvents"],"sources":["useScrollViewOffset.ts"],"sourcesContent":["import { RefObject, useEffect, useRef } from 'react';\n\nimport type Animated from 'react-native-reanimated';\nimport { ScrollEvent } from './useAnimatedScrollHandler';\nimport { SharedValue } from '../commonTypes';\nimport { findNodeHandle } from 'react-native';\nimport { useEvent } from './utils';\nimport { useSharedValue } from './useSharedValue';\n\nconst subscribeForEvents = [\n 'onScroll',\n 'onScrollBeginDrag',\n 'onScrollEndDrag',\n 'onMomentumScrollBegin',\n 'onMomentumScrollEnd',\n];\n\nexport function useScrollViewOffset(\n aref: RefObject<Animated.ScrollView>\n): SharedValue<number> {\n const offsetRef = useRef(useSharedValue(0));\n\n const event = useEvent<ScrollEvent>((event: ScrollEvent) => {\n 'worklet';\n offsetRef.current.value =\n event.contentOffset.x === 0\n ? event.contentOffset.y\n : event.contentOffset.x;\n }, subscribeForEvents);\n\n useEffect(() => {\n const viewTag = findNodeHandle(aref.current);\n event.current?.registerForEvents(viewTag as number);\n }, [aref.current]);\n\n return offsetRef.current;\n}\n"],"mappings":";;;;;;;AAAA;;AAKA;;AACA;;AACA;;AAEA,MAAMA,kBAAkB,GAAG,CACzB,UADyB,EAEzB,mBAFyB,EAGzB,iBAHyB,EAIzB,uBAJyB,EAKzB,qBALyB,CAA3B;;AAQO,SAASC,mBAAT,CACLC,IADK,EAEgB;EACrB,MAAMC,SAAS,GAAG,IAAAC,aAAA,EAAO,IAAAC,8BAAA,EAAe,CAAf,CAAP,CAAlB;EAEA,MAAMC,KAAK,GAAG,IAAAC,eAAA,EAAuBD,KAAD,IAAwB;IAC1D;;IACAH,SAAS,CAACK,OAAV,CAAkBC,KAAlB,GACEH,KAAK,CAACI,aAAN,CAAoBC,CAApB,KAA0B,CAA1B,GACIL,KAAK,CAACI,aAAN,CAAoBE,CADxB,GAEIN,KAAK,CAACI,aAAN,CAAoBC,CAH1B;EAID,CANa,EAMXX,kBANW,CAAd;EAQA,IAAAa,gBAAA,EAAU,MAAM;IAAA;;IACd,MAAMC,OAAO,GAAG,IAAAC,2BAAA,EAAeb,IAAI,CAACM,OAApB,CAAhB;IACA,kBAAAF,KAAK,CAACE,OAAN,kEAAeQ,iBAAf,CAAiCF,OAAjC;EACD,CAHD,EAGG,CAACZ,IAAI,CAACM,OAAN,CAHH;EAKA,OAAOL,SAAS,CAACK,OAAjB;AACD"}
|
|
@@ -7,13 +7,22 @@ exports.getRelativeCoords = getRelativeCoords;
|
|
|
7
7
|
|
|
8
8
|
var _NativeMethods = require("./NativeMethods");
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Given an absolute position and a component ref, returns the relative
|
|
12
|
+
* position in the component's local coordinate space.
|
|
13
|
+
*/
|
|
14
|
+
function getRelativeCoords(parentRef, absoluteX, absoluteY) {
|
|
11
15
|
'worklet';
|
|
12
16
|
|
|
13
17
|
const parentCoords = (0, _NativeMethods.measure)(parentRef);
|
|
18
|
+
|
|
19
|
+
if (parentCoords === null) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
|
|
14
23
|
return {
|
|
15
|
-
x:
|
|
16
|
-
y:
|
|
24
|
+
x: absoluteX - parentCoords.x,
|
|
25
|
+
y: absoluteY - parentCoords.y
|
|
17
26
|
};
|
|
18
27
|
}
|
|
19
28
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getRelativeCoords","parentRef","
|
|
1
|
+
{"version":3,"names":["getRelativeCoords","parentRef","absoluteX","absoluteY","parentCoords","measure","x","y"],"sources":["utils.ts"],"sourcesContent":["import { Component } from 'react';\nimport { measure } from './NativeMethods';\nimport { RefObjectFunction } from './hook/commonTypes';\n\nexport interface ComponentCoords {\n x: number;\n y: number;\n}\n\n/**\n * Given an absolute position and a component ref, returns the relative\n * position in the component's local coordinate space.\n */\nexport function getRelativeCoords(\n parentRef: RefObjectFunction<Component>,\n absoluteX: number,\n absoluteY: number\n): ComponentCoords | null {\n 'worklet';\n const parentCoords = measure(parentRef);\n if (parentCoords === null) {\n return null;\n }\n return {\n x: absoluteX - parentCoords.x,\n y: absoluteY - parentCoords.y,\n };\n}\n"],"mappings":";;;;;;;AACA;;AAQA;AACA;AACA;AACA;AACO,SAASA,iBAAT,CACLC,SADK,EAELC,SAFK,EAGLC,SAHK,EAImB;EACxB;;EACA,MAAMC,YAAY,GAAG,IAAAC,sBAAA,EAAQJ,SAAR,CAArB;;EACA,IAAIG,YAAY,KAAK,IAArB,EAA2B;IACzB,OAAO,IAAP;EACD;;EACD,OAAO;IACLE,CAAC,EAAEJ,SAAS,GAAGE,YAAY,CAACE,CADvB;IAELC,CAAC,EAAEJ,SAAS,GAAGC,YAAY,CAACG;EAFvB,CAAP;AAID"}
|
|
@@ -97,11 +97,8 @@ export default function createAnimatedComponent(Component, options) {
|
|
|
97
97
|
// TODO update config
|
|
98
98
|
const tag = findNodeHandle(ref);
|
|
99
99
|
|
|
100
|
-
if ((this.props.layout || this.props.entering || this.props.exiting) && tag != null) {
|
|
101
|
-
|
|
102
|
-
enableLayoutAnimations(true, false);
|
|
103
|
-
}
|
|
104
|
-
|
|
100
|
+
if (!shouldBeUseWeb() && (this.props.layout || this.props.entering || this.props.exiting) && tag != null) {
|
|
101
|
+
enableLayoutAnimations(true, false);
|
|
105
102
|
let layout = this.props.layout ? this.props.layout : DefaultLayout;
|
|
106
103
|
let entering = this.props.entering ? this.props.entering : DefaultEntering;
|
|
107
104
|
let exiting = this.props.exiting ? this.props.exiting : DefaultExiting;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","findNodeHandle","Platform","StyleSheet","WorkletEventHandler","setAndForwardRef","invariant","adaptViewConfig","RNRenderer","makeMutable","runOnUI","enableLayoutAnimations","DefaultEntering","DefaultExiting","DefaultLayout","isJest","isChromeDebugger","shouldBeUseWeb","initialUpdaterRun","getShadowNodeWrapperFromRef","dummyListener","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","createAnimatedComponent","Component","options","prototype","isReactComponent","AnimatedComponent","constructor","props","value","getForwardedRef","forwardedRef","setLocalRef","ref","tag","layout","entering","exiting","build","config","sv","global","LayoutAnimationRepository","registerConfig","_component","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","registerForEvents","unregisterFromEvents","OS","_styles","remove","_viewTag","animatedProps","_IS_FABRIC","shadowNodeWrapper","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","updater","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/LayoutAnimationRepository';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n makeMutable,\n runOnUI,\n enableLayoutAnimations,\n} from './reanimated2/core';\nimport {\n DefaultEntering,\n DefaultExiting,\n DefaultLayout,\n} from './reanimated2/layoutReanimation/defaultAnimations/Default';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n sv: SharedValue<null | Record<string, unknown>> | null;\n _component: ComponentRef | null = null;\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n this.sv = makeMutable({});\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this.sv = null;\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n }\n\n _attachNativeEvents() {\n const viewTag = findNodeHandle(this);\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(shadowNodeWrapper);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && hostInstance?.viewConfig) {\n adaptViewConfig(hostInstance.viewConfig);\n }\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n if (\n (this.props.layout || this.props.entering || this.props.exiting) &&\n tag != null\n ) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n let layout = this.props.layout ? this.props.layout : DefaultLayout;\n let entering = this.props.entering\n ? this.props.entering\n : DefaultEntering;\n let exiting = this.props.exiting\n ? this.props.exiting\n : DefaultExiting;\n\n if (has('build', layout)) {\n layout = layout.build();\n }\n\n if (has('build', entering)) {\n entering = entering.build() as EntryExitAnimationFunction;\n }\n\n if (has('build', exiting)) {\n exiting = exiting.build() as EntryExitAnimationFunction;\n }\n\n const config = {\n layout,\n entering,\n exiting,\n sv: this.sv,\n };\n runOnUI(() => {\n 'worklet';\n global.LayoutAnimationRepository.registerConfig(tag, config);\n })();\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","findNodeHandle","Platform","StyleSheet","WorkletEventHandler","setAndForwardRef","invariant","adaptViewConfig","RNRenderer","makeMutable","runOnUI","enableLayoutAnimations","DefaultEntering","DefaultExiting","DefaultLayout","isJest","isChromeDebugger","shouldBeUseWeb","initialUpdaterRun","getShadowNodeWrapperFromRef","dummyListener","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","createAnimatedComponent","Component","options","prototype","isReactComponent","AnimatedComponent","constructor","props","value","getForwardedRef","forwardedRef","setLocalRef","ref","tag","layout","entering","exiting","build","config","sv","global","LayoutAnimationRepository","registerConfig","_component","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","registerForEvents","unregisterFromEvents","OS","_styles","remove","_viewTag","animatedProps","_IS_FABRIC","shadowNodeWrapper","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","updater","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/LayoutAnimationRepository';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n makeMutable,\n runOnUI,\n enableLayoutAnimations,\n} from './reanimated2/core';\nimport {\n DefaultEntering,\n DefaultExiting,\n DefaultLayout,\n} from './reanimated2/layoutReanimation/defaultAnimations/Default';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n sv: SharedValue<null | Record<string, unknown>> | null;\n _component: ComponentRef | null = null;\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n this.sv = makeMutable({});\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this.sv = null;\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n }\n\n _attachNativeEvents() {\n const viewTag = findNodeHandle(this);\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(shadowNodeWrapper);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && hostInstance?.viewConfig) {\n adaptViewConfig(hostInstance.viewConfig);\n }\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n if (\n !shouldBeUseWeb() &&\n (this.props.layout || this.props.entering || this.props.exiting) &&\n tag != null\n ) {\n enableLayoutAnimations(true, false);\n let layout = this.props.layout ? this.props.layout : DefaultLayout;\n let entering = this.props.entering\n ? this.props.entering\n : DefaultEntering;\n let exiting = this.props.exiting\n ? this.props.exiting\n : DefaultExiting;\n\n if (has('build', layout)) {\n layout = layout.build();\n }\n\n if (has('build', entering)) {\n entering = entering.build() as EntryExitAnimationFunction;\n }\n\n if (has('build', exiting)) {\n exiting = exiting.build() as EntryExitAnimationFunction;\n }\n\n const config = {\n layout,\n entering,\n exiting,\n sv: this.sv,\n };\n runOnUI(() => {\n 'worklet';\n global.LayoutAnimationRepository.registerConfig(tag, config);\n })();\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,45 +1,68 @@
|
|
|
1
1
|
/* global _WORKLET _measure _scrollTo _dispatchCommand _setGestureState */
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
|
-
// @ts-nocheck
|
|
4
2
|
import { findNodeHandle } from 'react-native';
|
|
5
|
-
import { shouldBeUseWeb } from './PlatformChecker';
|
|
3
|
+
import { isChromeDebugger, isWeb, shouldBeUseWeb } from './PlatformChecker';
|
|
6
4
|
export function getTag(view) {
|
|
7
5
|
return findNodeHandle(view);
|
|
8
6
|
}
|
|
9
|
-
const
|
|
10
|
-
export
|
|
11
|
-
|
|
7
|
+
const isNative = !shouldBeUseWeb();
|
|
8
|
+
export let measure;
|
|
9
|
+
|
|
10
|
+
if (isWeb()) {
|
|
11
|
+
measure = animatedRef => {
|
|
12
|
+
const element = animatedRef(); // TODO: fix typing of animated refs on web
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
console.warn('[reanimated.measure] method cannot be used for web or Chrome Debugger');
|
|
14
|
+
const viewportOffset = element.getBoundingClientRect();
|
|
15
15
|
return {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
pageX:
|
|
21
|
-
pageY:
|
|
16
|
+
width: element.offsetWidth,
|
|
17
|
+
height: element.offsetHeight,
|
|
18
|
+
x: element.offsetLeft,
|
|
19
|
+
y: element.offsetTop,
|
|
20
|
+
pageX: viewportOffset.left,
|
|
21
|
+
pageY: viewportOffset.top
|
|
22
22
|
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
};
|
|
24
|
+
} else if (isChromeDebugger()) {
|
|
25
|
+
measure = _animatedRef => {
|
|
26
|
+
console.warn('[Reanimated] measure() cannot be used with Chrome Debugger.');
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
} else {
|
|
30
|
+
measure = animatedRef => {
|
|
31
|
+
'worklet';
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
if (!_WORKLET) {
|
|
34
|
+
console.warn('[Reanimated] measure() was called from the main JS context. Measure is ' + 'only available in the UI runtime. This may also happen if measure() ' + 'was called by a worklet in the useAnimatedStyle hook, because useAnimatedStyle ' + 'calls the given worklet on the JS runtime during render. If you want to ' + 'prevent this warning then wrap the call with `if (_WORKLET)`. Then it will ' + 'only be called on the UI runtime after the render has been completed.');
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
throw new Error(`The view with tag ${viewTag} could not be measured`);
|
|
31
|
-
}
|
|
38
|
+
const viewTag = animatedRef();
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
if (viewTag === -1) {
|
|
41
|
+
console.warn(`[Reanimated] The view with tag ${viewTag} is not a valid argument for measure(). This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).`);
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
36
44
|
|
|
37
|
-
|
|
45
|
+
const measured = _measure(viewTag);
|
|
46
|
+
|
|
47
|
+
if (measured === null) {
|
|
48
|
+
console.warn(`[Reanimated] The view with tag ${viewTag} has some undefined, not-yet-computed or meaningless value of \`LayoutMetrics\` type. This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).`);
|
|
49
|
+
return null;
|
|
50
|
+
} else if (measured.x === -1234567) {
|
|
51
|
+
console.warn(`[Reanimated] The view with tag ${viewTag} returned an invalid measurement response.`);
|
|
52
|
+
return null;
|
|
53
|
+
} else if (isNaN(measured.x)) {
|
|
54
|
+
console.warn(`[Reanimated] The view with tag ${viewTag} gets view-flattened on Android. To disable view-flattening, set \`collapsable={false}\` on this component.`);
|
|
55
|
+
return null;
|
|
56
|
+
} else {
|
|
57
|
+
return measured;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
38
60
|
}
|
|
61
|
+
|
|
39
62
|
export function dispatchCommand(animatedRef, commandName, args) {
|
|
40
63
|
'worklet';
|
|
41
64
|
|
|
42
|
-
if (!_WORKLET ||
|
|
65
|
+
if (!_WORKLET || !isNative) {
|
|
43
66
|
return;
|
|
44
67
|
}
|
|
45
68
|
|
|
@@ -49,17 +72,29 @@ export function dispatchCommand(animatedRef, commandName, args) {
|
|
|
49
72
|
}
|
|
50
73
|
export let scrollTo;
|
|
51
74
|
|
|
52
|
-
if (
|
|
75
|
+
if (isWeb()) {
|
|
76
|
+
scrollTo = (animatedRef, x, y, animated) => {
|
|
77
|
+
'worklet';
|
|
78
|
+
|
|
79
|
+
const element = animatedRef(); // @ts-ignore same call as in react-native-web
|
|
80
|
+
|
|
81
|
+
element.scrollTo({
|
|
82
|
+
x,
|
|
83
|
+
y,
|
|
84
|
+
animated
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
} else if (isNative && global._IS_FABRIC) {
|
|
53
88
|
scrollTo = (animatedRef, x, y, animated) => {
|
|
54
89
|
'worklet';
|
|
55
90
|
|
|
56
91
|
dispatchCommand(animatedRef, 'scrollTo', [x, y, animated]);
|
|
57
92
|
};
|
|
58
|
-
} else {
|
|
93
|
+
} else if (isNative) {
|
|
59
94
|
scrollTo = (animatedRef, x, y, animated) => {
|
|
60
95
|
'worklet';
|
|
61
96
|
|
|
62
|
-
if (!_WORKLET
|
|
97
|
+
if (!_WORKLET) {
|
|
63
98
|
return;
|
|
64
99
|
}
|
|
65
100
|
|
|
@@ -67,12 +102,15 @@ if (global._IS_FABRIC) {
|
|
|
67
102
|
|
|
68
103
|
_scrollTo(viewTag, x, y, animated);
|
|
69
104
|
};
|
|
105
|
+
} else {
|
|
106
|
+
scrollTo = (_animatedRef, _x, _y) => {// no-op
|
|
107
|
+
};
|
|
70
108
|
}
|
|
71
109
|
|
|
72
110
|
export function setGestureState(handlerTag, newState) {
|
|
73
111
|
'worklet';
|
|
74
112
|
|
|
75
|
-
if (!_WORKLET ||
|
|
113
|
+
if (!_WORKLET || !isNative) {
|
|
76
114
|
console.warn('[Reanimated] You can not use setGestureState in non-worklet function.');
|
|
77
115
|
return;
|
|
78
116
|
}
|