react-native-reanimated 3.0.0-rc.9 → 3.0.1
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 +30 -12
- package/Common/cpp/AnimatedSensor/AnimatedSensorModule.h +2 -0
- package/Common/cpp/Fabric/FabricUtils.cpp +3 -107
- package/Common/cpp/Fabric/FabricUtils.h +3 -24
- package/Common/cpp/Fabric/ReanimatedUIManagerBinding.cpp +54 -37
- package/Common/cpp/LayoutAnimations/LayoutAnimationType.h +8 -0
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.cpp +81 -26
- package/Common/cpp/LayoutAnimations/LayoutAnimationsManager.h +20 -3
- package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +105 -109
- package/Common/cpp/NativeModules/NativeReanimatedModule.h +19 -12
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +15 -7
- package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +6 -2
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +20 -1
- package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +9 -0
- package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +5 -1
- package/Common/cpp/Registries/EventHandlerRegistry.cpp +8 -34
- package/Common/cpp/Registries/EventHandlerRegistry.h +7 -13
- package/Common/cpp/SharedItems/Shareables.cpp +9 -63
- package/Common/cpp/SharedItems/Shareables.h +77 -72
- package/Common/cpp/Tools/CollectionUtils.h +14 -0
- package/Common/cpp/Tools/JsiUtils.cpp +26 -0
- package/Common/cpp/Tools/JsiUtils.h +176 -0
- package/Common/cpp/Tools/PlatformDepMethodsHolder.h +5 -5
- package/Common/cpp/Tools/ReanimatedVersion.cpp +17 -0
- package/Common/cpp/Tools/ReanimatedVersion.h +11 -0
- package/Common/cpp/Tools/RuntimeDecorator.cpp +49 -230
- package/Common/cpp/Tools/RuntimeDecorator.h +0 -2
- package/Common/cpp/Tools/WorkletEventHandler.cpp +3 -2
- package/Common/cpp/Tools/WorkletEventHandler.h +14 -6
- package/README.md +1 -1
- package/RNReanimated.podspec +2 -1
- package/android/CMakeLists.txt +188 -181
- package/android/build.gradle +362 -311
- package/android/proguard-rules.pro +2 -0
- package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +63 -295
- package/android/src/main/cpp/LayoutAnimations.cpp +35 -5
- package/android/src/main/cpp/LayoutAnimations.h +23 -6
- package/android/src/main/cpp/NativeProxy.cpp +143 -98
- package/android/src/main/cpp/NativeProxy.h +22 -28
- package/android/src/main/java/com/swmansion/reanimated/ReanimatedPackage.java +5 -4
- package/android/src/main/java/com/swmansion/reanimated/Utils.java +7 -1
- package/android/src/main/java/com/swmansion/reanimated/keyboardObserver/ReanimatedKeyboardEventListener.java +10 -3
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +218 -35
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +43 -17
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +6 -2
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedElement.java +19 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/SharedTransitionManager.java +610 -0
- package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/Snapshot.java +93 -23
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/AnimationFrameCallback.java +19 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/EventHandler.java +35 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/KeyboardEventDataUpdater.java +16 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/NativeProxyCommon.java +206 -0
- package/android/src/main/java/com/swmansion/reanimated/nativeProxy/SensorSetter.java +17 -0
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensor.java +9 -3
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorContainer.java +3 -4
- package/android/src/main/java/com/swmansion/reanimated/sensor/ReanimatedSensorListener.java +31 -7
- package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +90 -307
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/70/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +16 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/ReanimatedUIManagerFactory.java +63 -0
- package/android/src/reactNativeVersionPatch/ReanimatedUIManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +271 -0
- package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +76 -20
- package/ios/LayoutReanimation/REAAnimationsManager.h +28 -4
- package/ios/LayoutReanimation/REAAnimationsManager.m +216 -61
- package/ios/LayoutReanimation/REAFrame.h +10 -0
- package/ios/LayoutReanimation/REAFrame.m +15 -0
- package/ios/LayoutReanimation/REAScreensHelper.h +19 -0
- package/ios/LayoutReanimation/REAScreensHelper.m +106 -0
- package/ios/LayoutReanimation/REASharedElement.h +15 -0
- package/ios/LayoutReanimation/REASharedElement.m +16 -0
- package/ios/LayoutReanimation/REASharedTransitionManager.h +17 -0
- package/ios/LayoutReanimation/REASharedTransitionManager.m +632 -0
- package/ios/LayoutReanimation/REASnapshot.h +1 -0
- package/ios/LayoutReanimation/REASnapshot.m +96 -11
- package/ios/LayoutReanimation/REAUIManager.mm +64 -17
- package/ios/REAModule.mm +2 -7
- package/ios/REANodesManager.mm +1 -21
- package/ios/keyboardObserver/REAKeyboardEventObserver.m +72 -36
- package/ios/native/NativeProxy.mm +75 -114
- package/ios/native/REAInitializer.mm +2 -7
- package/ios/native/REAJSIUtils.h +60 -2
- package/ios/sensor/ReanimatedSensor.h +6 -2
- package/ios/sensor/ReanimatedSensor.m +43 -7
- package/ios/sensor/ReanimatedSensorContainer.h +4 -1
- package/ios/sensor/ReanimatedSensorContainer.m +8 -2
- package/lib/commonjs/createAnimatedComponent.js +244 -28
- package/lib/commonjs/createAnimatedComponent.js.map +1 -1
- package/lib/commonjs/reanimated2/Colors.js +43 -22
- package/lib/commonjs/reanimated2/Colors.js.map +1 -1
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +16 -33
- package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/styleAnimation.js +5 -1
- package/lib/commonjs/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/commonjs/reanimated2/animation/util.js +17 -15
- package/lib/commonjs/reanimated2/animation/util.js.map +1 -1
- package/lib/commonjs/reanimated2/commonTypes.js +33 -1
- package/lib/commonjs/reanimated2/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/core.js +33 -14
- package/lib/commonjs/reanimated2/core.js.map +1 -1
- package/lib/commonjs/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
- 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 +0 -6
- package/lib/commonjs/reanimated2/hook/index.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js +5 -2
- package/lib/commonjs/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js +13 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js +91 -15
- package/lib/commonjs/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +43 -40
- package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js +13 -1
- package/lib/commonjs/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js +2 -2
- package/lib/commonjs/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/commonjs/reanimated2/hook/utils.js +18 -65
- package/lib/commonjs/reanimated2/hook/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/index.js +13 -0
- package/lib/commonjs/reanimated2/index.js.map +1 -1
- package/lib/commonjs/reanimated2/initializers.js +71 -32
- package/lib/commonjs/reanimated2/initializers.js.map +1 -1
- package/lib/commonjs/reanimated2/interpolateColor.js +96 -19
- package/lib/commonjs/reanimated2/interpolateColor.js.map +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js +1 -1
- package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +103 -13
- package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js +22 -0
- package/lib/commonjs/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js +2 -0
- package/lib/commonjs/reanimated2/js-reanimated/WebSensor.js.map +1 -0
- package/lib/commonjs/reanimated2/js-reanimated/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/global.js +0 -2
- package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js +0 -1
- package/lib/commonjs/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +11 -0
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js +8 -0
- package/lib/commonjs/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +22 -9
- package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -14
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -14
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -15
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -23
- package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/index.js +13 -0
- package/lib/commonjs/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js +94 -0
- package/lib/commonjs/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
- package/lib/commonjs/reanimated2/mappers.js +18 -6
- package/lib/commonjs/reanimated2/mappers.js.map +1 -1
- package/lib/commonjs/reanimated2/mock.js +20 -1
- package/lib/commonjs/reanimated2/mock.js.map +1 -1
- package/lib/commonjs/reanimated2/mutables.js +4 -2
- package/lib/commonjs/reanimated2/mutables.js.map +1 -1
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js +42 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.js.map +1 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js +15 -0
- package/lib/commonjs/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
- package/lib/commonjs/reanimated2/pluginUtils.js +11 -0
- package/lib/commonjs/reanimated2/pluginUtils.js.map +1 -0
- package/lib/commonjs/reanimated2/shareables.js +36 -15
- package/lib/commonjs/reanimated2/shareables.js.map +1 -1
- package/lib/commonjs/reanimated2/threads.js +114 -7
- package/lib/commonjs/reanimated2/threads.js.map +1 -1
- package/lib/commonjs/reanimated2/utils.js +7 -0
- package/lib/commonjs/reanimated2/utils.js.map +1 -1
- package/lib/commonjs/reanimated2/valueSetter.js +1 -3
- package/lib/commonjs/reanimated2/valueSetter.js.map +1 -1
- package/lib/module/createAnimatedComponent.js +241 -29
- package/lib/module/createAnimatedComponent.js.map +1 -1
- package/lib/module/reanimated2/Colors.js +35 -19
- package/lib/module/reanimated2/Colors.js.map +1 -1
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +16 -32
- package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
- package/lib/module/reanimated2/animation/styleAnimation.js +5 -1
- package/lib/module/reanimated2/animation/styleAnimation.js.map +1 -1
- package/lib/module/reanimated2/animation/util.js +17 -16
- package/lib/module/reanimated2/animation/util.js.map +1 -1
- package/lib/module/reanimated2/commonTypes.js +29 -0
- package/lib/module/reanimated2/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/core.js +32 -7
- package/lib/module/reanimated2/core.js.map +1 -1
- package/lib/module/reanimated2/frameCallback/FrameCallbackRegistryUI.js +2 -2
- 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 -1
- package/lib/module/reanimated2/hook/index.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js +5 -2
- package/lib/module/reanimated2/hook/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js +12 -1
- package/lib/module/reanimated2/hook/useAnimatedReaction.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedRef.js +2 -2
- package/lib/module/reanimated2/hook/useAnimatedRef.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedSensor.js +90 -13
- package/lib/module/reanimated2/hook/useAnimatedSensor.js.map +1 -1
- package/lib/module/reanimated2/hook/useAnimatedStyle.js +46 -43
- package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js +12 -1
- package/lib/module/reanimated2/hook/useDerivedValue.js.map +1 -1
- package/lib/module/reanimated2/hook/useScrollViewOffset.js +2 -2
- package/lib/module/reanimated2/hook/useScrollViewOffset.js.map +1 -1
- package/lib/module/reanimated2/hook/utils.js +17 -60
- package/lib/module/reanimated2/hook/utils.js.map +1 -1
- package/lib/module/reanimated2/index.js +1 -0
- package/lib/module/reanimated2/index.js.map +1 -1
- package/lib/module/reanimated2/initializers.js +72 -33
- package/lib/module/reanimated2/initializers.js.map +1 -1
- package/lib/module/reanimated2/interpolateColor.js +96 -19
- package/lib/module/reanimated2/interpolateColor.js.map +1 -1
- package/lib/module/reanimated2/jestUtils.js +1 -1
- package/lib/module/reanimated2/jestUtils.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js +103 -13
- package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/Mapper.js +21 -0
- package/lib/module/reanimated2/js-reanimated/Mapper.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/WebSensor.js +2 -0
- package/lib/module/reanimated2/js-reanimated/WebSensor.js.map +1 -0
- package/lib/module/reanimated2/js-reanimated/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/global.js +0 -2
- package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
- package/lib/module/reanimated2/js-reanimated/index.js +0 -1
- package/lib/module/reanimated2/js-reanimated/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js +9 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/commonTypes.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js +1 -0
- package/lib/module/reanimated2/layoutReanimation/animationBuilder/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js +20 -8
- package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js +16 -21
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Bounce.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js +8 -12
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js +8 -12
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Roll.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js +8 -13
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Slide.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js +16 -21
- package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Zoom.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/index.js +1 -0
- package/lib/module/reanimated2/layoutReanimation/index.js.map +1 -1
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js +82 -0
- package/lib/module/reanimated2/layoutReanimation/sharedTransitions/index.js.map +1 -0
- package/lib/module/reanimated2/mappers.js +16 -6
- package/lib/module/reanimated2/mappers.js.map +1 -1
- package/lib/module/reanimated2/mock.js +20 -1
- package/lib/module/reanimated2/mock.js.map +1 -1
- package/lib/module/reanimated2/mutables.js +4 -2
- package/lib/module/reanimated2/mutables.js.map +1 -1
- package/lib/module/reanimated2/platform-specific/checkVersion.js +35 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.js.map +1 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js +8 -0
- package/lib/module/reanimated2/platform-specific/checkVersion.web.js.map +1 -0
- package/lib/module/reanimated2/pluginUtils.js +4 -0
- package/lib/module/reanimated2/pluginUtils.js.map +1 -0
- package/lib/module/reanimated2/shareables.js +36 -12
- package/lib/module/reanimated2/shareables.js.map +1 -1
- package/lib/module/reanimated2/threads.js +105 -7
- package/lib/module/reanimated2/threads.js.map +1 -1
- package/lib/module/reanimated2/utils.js +5 -0
- package/lib/module/reanimated2/utils.js.map +1 -1
- package/lib/module/reanimated2/valueSetter.js +1 -2
- package/lib/module/reanimated2/valueSetter.js.map +1 -1
- package/mock.js +1 -211
- package/package.json +10 -10
- package/{plugin.js → plugin/index.js} +128 -249
- package/react-native-reanimated.d.ts +55 -417
- package/scripts/reanimated_utils.rb +15 -2
- package/src/createAnimatedComponent.tsx +247 -28
- package/src/reanimated2/Colors.ts +38 -11
- package/src/reanimated2/NativeReanimated/NativeReanimated.ts +52 -39
- package/src/reanimated2/animation/styleAnimation.ts +8 -1
- package/src/reanimated2/animation/util.ts +29 -16
- package/src/reanimated2/commonTypes.ts +28 -1
- package/src/reanimated2/core.ts +42 -9
- package/src/reanimated2/frameCallback/FrameCallbackRegistryUI.ts +2 -2
- package/src/reanimated2/globals.d.ts +12 -15
- package/src/reanimated2/hook/index.ts +1 -1
- package/src/reanimated2/hook/useAnimatedKeyboard.ts +10 -4
- package/src/reanimated2/hook/useAnimatedReaction.ts +12 -5
- package/src/reanimated2/hook/useAnimatedRef.ts +1 -4
- package/src/reanimated2/hook/useAnimatedSensor.ts +90 -11
- package/src/reanimated2/hook/useAnimatedStyle.ts +44 -36
- package/src/reanimated2/hook/useDerivedValue.ts +8 -1
- package/src/reanimated2/hook/useScrollViewOffset.ts +2 -2
- package/src/reanimated2/hook/utils.ts +15 -61
- package/src/reanimated2/index.ts +1 -0
- package/src/reanimated2/initializers.ts +76 -35
- package/src/reanimated2/interpolateColor.ts +104 -20
- package/src/reanimated2/jestUtils.ts +1 -1
- package/src/reanimated2/js-reanimated/JSReanimated.ts +98 -15
- package/src/reanimated2/js-reanimated/Mapper.ts +32 -0
- package/src/reanimated2/js-reanimated/WebSensor.ts +34 -0
- package/src/reanimated2/js-reanimated/commonTypes.ts +0 -1
- package/src/reanimated2/js-reanimated/global.ts +0 -1
- package/src/reanimated2/js-reanimated/index.ts +0 -1
- package/src/reanimated2/layoutReanimation/animationBuilder/commonTypes.ts +13 -1
- package/src/reanimated2/layoutReanimation/animationBuilder/index.ts +1 -0
- package/src/reanimated2/layoutReanimation/animationsManager.ts +20 -9
- package/src/reanimated2/layoutReanimation/defaultAnimations/Bounce.ts +16 -19
- package/src/reanimated2/layoutReanimation/defaultAnimations/Lightspeed.ts +14 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Roll.ts +21 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Slide.ts +32 -11
- package/src/reanimated2/layoutReanimation/defaultAnimations/Zoom.ts +36 -19
- package/src/reanimated2/layoutReanimation/index.ts +1 -0
- package/src/reanimated2/layoutReanimation/sharedTransitions/index.ts +87 -0
- package/src/reanimated2/mappers.ts +17 -6
- package/src/reanimated2/mock.ts +25 -2
- package/src/reanimated2/mutables.ts +2 -0
- package/src/reanimated2/platform-specific/checkVersion.ts +39 -0
- package/src/reanimated2/platform-specific/checkVersion.web.ts +6 -0
- package/src/reanimated2/pluginUtils.ts +8 -0
- package/src/reanimated2/shareables.ts +45 -16
- package/src/reanimated2/threads.ts +103 -4
- package/src/reanimated2/utils.ts +6 -0
- package/src/reanimated2/valueSetter.ts +1 -2
- package/lib/commonjs/reanimated2/time.js +0 -55
- package/lib/commonjs/reanimated2/time.js.map +0 -1
- package/lib/module/reanimated2/time.js +0 -37
- package/lib/module/reanimated2/time.js.map +0 -1
- package/src/reanimated2/time.ts +0 -30
- /package/android/src/{main/java → reactNativeVersionPatch/ReanimatedUIManager/70}/com/swmansion/reanimated/layoutReanimation/ReanimatedUIManager.java +0 -0
|
@@ -27,9 +27,17 @@ var _PlatformChecker = require("./reanimated2/PlatformChecker");
|
|
|
27
27
|
|
|
28
28
|
var _animation = require("./reanimated2/animation");
|
|
29
29
|
|
|
30
|
+
var _layoutReanimation = require("./reanimated2/layoutReanimation");
|
|
31
|
+
|
|
32
|
+
var _ViewDescriptorsSet = require("./reanimated2/ViewDescriptorsSet");
|
|
33
|
+
|
|
30
34
|
var _fabricUtils = require("./reanimated2/fabricUtils");
|
|
31
35
|
|
|
32
|
-
var
|
|
36
|
+
var _UpdateProps = _interopRequireDefault(require("./reanimated2/UpdateProps"));
|
|
37
|
+
|
|
38
|
+
var _NativeReanimated = _interopRequireDefault(require("./reanimated2/NativeReanimated"));
|
|
39
|
+
|
|
40
|
+
var _reanimated = require("./reanimated2");
|
|
33
41
|
|
|
34
42
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
43
|
|
|
@@ -97,6 +105,86 @@ const has = (key, x) => {
|
|
|
97
105
|
return false;
|
|
98
106
|
};
|
|
99
107
|
|
|
108
|
+
function isInlineStyleTransform(transform) {
|
|
109
|
+
if (!transform) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return transform.some(t => hasInlineStyles(t));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function hasInlineStyles(style) {
|
|
117
|
+
if (!style) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return Object.keys(style).some(key => {
|
|
122
|
+
const styleValue = style[key];
|
|
123
|
+
return (0, _reanimated.isSharedValue)(styleValue) || key === 'transform' && isInlineStyleTransform(styleValue);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function extractSharedValuesMapFromProps(props) {
|
|
128
|
+
const inlineProps = {};
|
|
129
|
+
|
|
130
|
+
for (const key in props) {
|
|
131
|
+
const value = props[key];
|
|
132
|
+
|
|
133
|
+
if (key === 'style') {
|
|
134
|
+
const styles = flattenArray(props.style ?? []);
|
|
135
|
+
styles.forEach(style => {
|
|
136
|
+
if (!style) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
for (const [key, styleValue] of Object.entries(style)) {
|
|
141
|
+
if ((0, _reanimated.isSharedValue)(styleValue)) {
|
|
142
|
+
inlineProps[key] = styleValue;
|
|
143
|
+
} else if (key === 'transform' && isInlineStyleTransform(styleValue)) {
|
|
144
|
+
inlineProps[key] = styleValue;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
} else if ((0, _reanimated.isSharedValue)(value)) {
|
|
149
|
+
inlineProps[key] = value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return inlineProps;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function inlinePropsHasChanged(styles1, styles2) {
|
|
157
|
+
if (Object.keys(styles1).length !== Object.keys(styles2).length) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
for (const key of Object.keys(styles1)) {
|
|
162
|
+
if (styles1[key] !== styles2[key]) return true;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function getInlinePropsUpdate(inlineProps) {
|
|
169
|
+
'worklet';
|
|
170
|
+
|
|
171
|
+
const update = {};
|
|
172
|
+
|
|
173
|
+
for (const [key, styleValue] of Object.entries(inlineProps)) {
|
|
174
|
+
if (key === 'transform') {
|
|
175
|
+
update[key] = styleValue.map(transform => {
|
|
176
|
+
return getInlinePropsUpdate(transform);
|
|
177
|
+
});
|
|
178
|
+
} else if ((0, _reanimated.isSharedValue)(styleValue)) {
|
|
179
|
+
update[key] = styleValue.value;
|
|
180
|
+
} else {
|
|
181
|
+
update[key] = styleValue;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return update;
|
|
186
|
+
}
|
|
187
|
+
|
|
100
188
|
function createAnimatedComponent(Component, options) {
|
|
101
189
|
(0, _invariant.default)(typeof Component !== 'function' || Component.prototype && Component.prototype.isReactComponent, '`createAnimatedComponent` does not support stateless functional components; ' + 'use a class component instead.');
|
|
102
190
|
|
|
@@ -120,6 +208,12 @@ function createAnimatedComponent(Component, options) {
|
|
|
120
208
|
|
|
121
209
|
_defineProperty(this, "_component", null);
|
|
122
210
|
|
|
211
|
+
_defineProperty(this, "_inlinePropsViewDescriptors", null);
|
|
212
|
+
|
|
213
|
+
_defineProperty(this, "_inlinePropsMapperId", null);
|
|
214
|
+
|
|
215
|
+
_defineProperty(this, "_inlineProps", {});
|
|
216
|
+
|
|
123
217
|
_defineProperty(this, "_setComponentRef", (0, _setAndForwardRef.default)({
|
|
124
218
|
getForwardedRef: () => this.props.forwardedRef,
|
|
125
219
|
setLocalRef: ref => {
|
|
@@ -128,24 +222,30 @@ function createAnimatedComponent(Component, options) {
|
|
|
128
222
|
const {
|
|
129
223
|
layout,
|
|
130
224
|
entering,
|
|
131
|
-
exiting
|
|
225
|
+
exiting,
|
|
226
|
+
sharedTransitionTag
|
|
132
227
|
} = this.props;
|
|
133
228
|
|
|
134
|
-
if ((layout || entering || exiting) && tag != null) {
|
|
229
|
+
if ((layout || entering || exiting || sharedTransitionTag) && tag != null) {
|
|
135
230
|
if (!(0, _PlatformChecker.shouldBeUseWeb)()) {
|
|
136
231
|
(0, _core.enableLayoutAnimations)(true, false);
|
|
137
232
|
}
|
|
138
233
|
|
|
139
234
|
if (layout) {
|
|
140
|
-
(0, _core.configureLayoutAnimations)(tag,
|
|
235
|
+
(0, _core.configureLayoutAnimations)(tag, _layoutReanimation.LayoutAnimationType.LAYOUT, maybeBuild(layout));
|
|
141
236
|
}
|
|
142
237
|
|
|
143
238
|
if (entering) {
|
|
144
|
-
(0, _core.configureLayoutAnimations)(tag,
|
|
239
|
+
(0, _core.configureLayoutAnimations)(tag, _layoutReanimation.LayoutAnimationType.ENTERING, maybeBuild(entering));
|
|
145
240
|
}
|
|
146
241
|
|
|
147
242
|
if (exiting) {
|
|
148
|
-
(0, _core.configureLayoutAnimations)(tag,
|
|
243
|
+
(0, _core.configureLayoutAnimations)(tag, _layoutReanimation.LayoutAnimationType.EXITING, maybeBuild(exiting));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
if (sharedTransitionTag) {
|
|
247
|
+
const sharedElementTransition = this.props.sharedTransitionStyle ?? _layoutReanimation.DefaultSharedTransition;
|
|
248
|
+
(0, _core.configureLayoutAnimations)(tag, _layoutReanimation.LayoutAnimationType.SHARED_ELEMENT_TRANSITION, maybeBuild(sharedElementTransition), sharedTransitionTag);
|
|
149
249
|
}
|
|
150
250
|
}
|
|
151
251
|
|
|
@@ -166,16 +266,30 @@ function createAnimatedComponent(Component, options) {
|
|
|
166
266
|
this._detachNativeEvents();
|
|
167
267
|
|
|
168
268
|
this._detachStyles();
|
|
269
|
+
|
|
270
|
+
this._detachInlineProps();
|
|
169
271
|
}
|
|
170
272
|
|
|
171
273
|
componentDidMount() {
|
|
172
274
|
this._attachNativeEvents();
|
|
173
275
|
|
|
174
276
|
this._attachAnimatedStyles();
|
|
277
|
+
|
|
278
|
+
this._attachInlineProps();
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
_getEventViewRef() {
|
|
282
|
+
var _this$_component;
|
|
283
|
+
|
|
284
|
+
// Make sure to get the scrollable node for components that implement
|
|
285
|
+
// `ScrollResponder.Mixin`.
|
|
286
|
+
return (_this$_component = this._component) !== null && _this$_component !== void 0 && _this$_component.getScrollableNode ? this._component.getScrollableNode() : this._component;
|
|
175
287
|
}
|
|
176
288
|
|
|
177
289
|
_attachNativeEvents() {
|
|
178
|
-
const
|
|
290
|
+
const node = this._getEventViewRef();
|
|
291
|
+
|
|
292
|
+
const viewTag = (0, _reactNative.findNodeHandle)(options !== null && options !== void 0 && options.setNativeProps ? this : node);
|
|
179
293
|
|
|
180
294
|
for (const key in this.props) {
|
|
181
295
|
const prop = this.props[key];
|
|
@@ -215,11 +329,11 @@ function createAnimatedComponent(Component, options) {
|
|
|
215
329
|
}
|
|
216
330
|
|
|
217
331
|
if (global._IS_FABRIC) {
|
|
218
|
-
const
|
|
332
|
+
const viewTag = this._viewTag;
|
|
219
333
|
(0, _core.runOnUI)(() => {
|
|
220
334
|
'worklet';
|
|
221
335
|
|
|
222
|
-
_removeShadowNodeFromRegistry(
|
|
336
|
+
_removeShadowNodeFromRegistry(viewTag);
|
|
223
337
|
})();
|
|
224
338
|
}
|
|
225
339
|
}
|
|
@@ -262,31 +376,26 @@ function createAnimatedComponent(Component, options) {
|
|
|
262
376
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
263
377
|
options.setNativeProps(this._component, props);
|
|
264
378
|
} else {
|
|
265
|
-
var _this$
|
|
379
|
+
var _this$_component2, _this$_component2$set;
|
|
266
380
|
|
|
267
381
|
// eslint-disable-next-line no-unused-expressions
|
|
268
|
-
(_this$
|
|
382
|
+
(_this$_component2 = this._component) === null || _this$_component2 === void 0 ? void 0 : (_this$_component2$set = _this$_component2.setNativeProps) === null || _this$_component2$set === void 0 ? void 0 : _this$_component2$set.call(_this$_component2, props);
|
|
269
383
|
}
|
|
270
384
|
}
|
|
271
385
|
|
|
272
|
-
|
|
273
|
-
var _this$props$animatedP3;
|
|
274
|
-
|
|
275
|
-
const styles = this.props.style ? onlyAnimatedStyles(flattenArray(this.props.style)) : [];
|
|
276
|
-
const prevStyles = this._styles;
|
|
277
|
-
this._styles = styles;
|
|
278
|
-
const prevAnimatedProps = this._animatedProps;
|
|
279
|
-
this._animatedProps = this.props.animatedProps;
|
|
386
|
+
_getViewInfo() {
|
|
280
387
|
let viewTag;
|
|
281
388
|
let viewName;
|
|
282
389
|
let shadowNodeWrapper = null;
|
|
390
|
+
let viewConfig;
|
|
283
391
|
|
|
284
392
|
if (_reactNative.Platform.OS === 'web') {
|
|
285
393
|
viewTag = (0, _reactNative.findNodeHandle)(this);
|
|
286
394
|
viewName = null;
|
|
287
395
|
shadowNodeWrapper = null;
|
|
396
|
+
viewConfig = null;
|
|
288
397
|
} else {
|
|
289
|
-
var _hostInstance$viewCon
|
|
398
|
+
var _hostInstance$viewCon;
|
|
290
399
|
|
|
291
400
|
// 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
|
|
292
401
|
const hostInstance = _RNRenderer.RNRenderer.findHostInstance_DEPRECATED(this);
|
|
@@ -302,19 +411,45 @@ function createAnimatedComponent(Component, options) {
|
|
|
302
411
|
* The name we're looking for is in the field named uiViewClassName.
|
|
303
412
|
*/
|
|
304
413
|
|
|
305
|
-
viewName = hostInstance === null || hostInstance === void 0 ? void 0 : (_hostInstance$viewCon = hostInstance.viewConfig) === null || _hostInstance$viewCon === void 0 ? void 0 : _hostInstance$viewCon.uiViewClassName;
|
|
306
|
-
|
|
307
|
-
const hasReanimated2Props = ((_this$props$animatedP2 = this.props.animatedProps) === null || _this$props$animatedP2 === void 0 ? void 0 : _this$props$animatedP2.viewDescriptors) || styles.length;
|
|
308
|
-
|
|
309
|
-
if (hasReanimated2Props && hostInstance !== null && hostInstance !== void 0 && hostInstance.viewConfig) {
|
|
310
|
-
(0, _ConfigHelper.adaptViewConfig)(hostInstance.viewConfig);
|
|
311
|
-
}
|
|
414
|
+
viewName = hostInstance === null || hostInstance === void 0 ? void 0 : (_hostInstance$viewCon = hostInstance.viewConfig) === null || _hostInstance$viewCon === void 0 ? void 0 : _hostInstance$viewCon.uiViewClassName;
|
|
415
|
+
viewConfig = hostInstance === null || hostInstance === void 0 ? void 0 : hostInstance.viewConfig;
|
|
312
416
|
|
|
313
417
|
if (global._IS_FABRIC) {
|
|
314
|
-
shadowNodeWrapper = (0,
|
|
418
|
+
shadowNodeWrapper = (0, _fabricUtils.getShadowNodeWrapperFromRef)(this);
|
|
315
419
|
}
|
|
316
420
|
}
|
|
317
421
|
|
|
422
|
+
return {
|
|
423
|
+
viewTag,
|
|
424
|
+
viewName,
|
|
425
|
+
shadowNodeWrapper,
|
|
426
|
+
viewConfig
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
_attachAnimatedStyles() {
|
|
431
|
+
var _this$props$animatedP2, _this$props$animatedP3;
|
|
432
|
+
|
|
433
|
+
const styles = this.props.style ? onlyAnimatedStyles(flattenArray(this.props.style)) : [];
|
|
434
|
+
const prevStyles = this._styles;
|
|
435
|
+
this._styles = styles;
|
|
436
|
+
const prevAnimatedProps = this._animatedProps;
|
|
437
|
+
this._animatedProps = this.props.animatedProps;
|
|
438
|
+
|
|
439
|
+
const {
|
|
440
|
+
viewTag,
|
|
441
|
+
viewName,
|
|
442
|
+
shadowNodeWrapper,
|
|
443
|
+
viewConfig
|
|
444
|
+
} = this._getViewInfo(); // update UI props whitelist for this view
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
const hasReanimated2Props = ((_this$props$animatedP2 = this.props.animatedProps) === null || _this$props$animatedP2 === void 0 ? void 0 : _this$props$animatedP2.viewDescriptors) || styles.length;
|
|
448
|
+
|
|
449
|
+
if (hasReanimated2Props && viewConfig) {
|
|
450
|
+
(0, _ConfigHelper.adaptViewConfig)(viewConfig);
|
|
451
|
+
}
|
|
452
|
+
|
|
318
453
|
this._viewTag = viewTag; // remove old styles
|
|
319
454
|
|
|
320
455
|
if (prevStyles) {
|
|
@@ -371,10 +506,73 @@ function createAnimatedComponent(Component, options) {
|
|
|
371
506
|
}
|
|
372
507
|
}
|
|
373
508
|
|
|
509
|
+
_attachInlineProps() {
|
|
510
|
+
const newInlineProps = extractSharedValuesMapFromProps(this.props);
|
|
511
|
+
const hasChanged = inlinePropsHasChanged(newInlineProps, this._inlineProps);
|
|
512
|
+
|
|
513
|
+
if (hasChanged) {
|
|
514
|
+
if (!this._inlinePropsViewDescriptors) {
|
|
515
|
+
this._inlinePropsViewDescriptors = (0, _ViewDescriptorsSet.makeViewDescriptorsSet)();
|
|
516
|
+
|
|
517
|
+
const {
|
|
518
|
+
viewTag,
|
|
519
|
+
viewName,
|
|
520
|
+
shadowNodeWrapper,
|
|
521
|
+
viewConfig
|
|
522
|
+
} = this._getViewInfo();
|
|
523
|
+
|
|
524
|
+
if (Object.keys(newInlineProps).length && viewConfig) {
|
|
525
|
+
(0, _ConfigHelper.adaptViewConfig)(viewConfig);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
this._inlinePropsViewDescriptors.add({
|
|
529
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
530
|
+
tag: viewTag,
|
|
531
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
532
|
+
name: viewName,
|
|
533
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
534
|
+
shadowNodeWrapper: shadowNodeWrapper
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
const sharableViewDescriptors = this._inlinePropsViewDescriptors.sharableViewDescriptors;
|
|
539
|
+
const maybeViewRef = _NativeReanimated.default.native ? undefined : {
|
|
540
|
+
items: new Set([this])
|
|
541
|
+
}; // see makeViewsRefSet
|
|
542
|
+
|
|
543
|
+
const updaterFunction = () => {
|
|
544
|
+
'worklet';
|
|
545
|
+
|
|
546
|
+
const update = getInlinePropsUpdate(newInlineProps);
|
|
547
|
+
(0, _UpdateProps.default)(sharableViewDescriptors, update, maybeViewRef);
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
this._inlineProps = newInlineProps;
|
|
551
|
+
|
|
552
|
+
if (this._inlinePropsMapperId) {
|
|
553
|
+
(0, _core.stopMapper)(this._inlinePropsMapperId);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
this._inlinePropsMapperId = null;
|
|
557
|
+
|
|
558
|
+
if (Object.keys(newInlineProps).length) {
|
|
559
|
+
this._inlinePropsMapperId = (0, _core.startMapper)(updaterFunction, Object.values(newInlineProps));
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
_detachInlineProps() {
|
|
565
|
+
if (this._inlinePropsMapperId) {
|
|
566
|
+
(0, _core.stopMapper)(this._inlinePropsMapperId);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
374
570
|
componentDidUpdate(prevProps) {
|
|
375
571
|
this._reattachNativeEvents(prevProps);
|
|
376
572
|
|
|
377
573
|
this._attachAnimatedStyles();
|
|
574
|
+
|
|
575
|
+
this._attachInlineProps();
|
|
378
576
|
}
|
|
379
577
|
|
|
380
578
|
_filterNonAnimatedProps(inputProps) {
|
|
@@ -398,6 +596,20 @@ function createAnimatedComponent(Component, options) {
|
|
|
398
596
|
}
|
|
399
597
|
|
|
400
598
|
return this.initialStyle;
|
|
599
|
+
} else if (hasInlineStyles(style)) {
|
|
600
|
+
if (this._isFirstRender) {
|
|
601
|
+
return getInlinePropsUpdate(style);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
const newStyle = {};
|
|
605
|
+
|
|
606
|
+
for (const [key, styleValue] of Object.entries(style)) {
|
|
607
|
+
if (!(0, _reanimated.isSharedValue)(styleValue) && !(key === 'transform' && isInlineStyleTransform(styleValue))) {
|
|
608
|
+
newStyle[key] = styleValue;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
return newStyle;
|
|
401
613
|
} else {
|
|
402
614
|
return style;
|
|
403
615
|
}
|
|
@@ -422,6 +634,10 @@ function createAnimatedComponent(Component, options) {
|
|
|
422
634
|
} else {
|
|
423
635
|
props[key] = dummyListener;
|
|
424
636
|
}
|
|
637
|
+
} else if ((0, _reanimated.isSharedValue)(value)) {
|
|
638
|
+
if (this._isFirstRender) {
|
|
639
|
+
props[key] = value.value;
|
|
640
|
+
}
|
|
425
641
|
} else if (key !== 'onGestureHandlerStateChange' || !(0, _PlatformChecker.isChromeDebugger)()) {
|
|
426
642
|
props[key] = value;
|
|
427
643
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["dummyListener","maybeBuild","layoutAnimationOrBuilder","isAnimationBuilder","value","build","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","invariant","prototype","isReactComponent","AnimatedComponent","React","constructor","props","setAndForwardRef","getForwardedRef","forwardedRef","setLocalRef","ref","tag","findNodeHandle","layout","entering","exiting","shouldBeUseWeb","enableLayoutAnimations","configureLayoutAnimations","_component","isJest","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","WorkletEventHandler","registerForEvents","unregisterFromEvents","Platform","OS","_styles","remove","_viewTag","animatedProps","global","_IS_FABRIC","shadowNodeWrapper","getShadowNodeWrapperFromRef","runOnUI","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","RNRenderer","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","adaptViewConfig","makeShareableShadowNodeWrapper","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","initialUpdaterRun","updater","StyleSheet","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","isChromeDebugger","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/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n configureLayoutAnimations,\n enableLayoutAnimations,\n runOnUI,\n} from './reanimated2/core';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n LayoutAnimationFunction,\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';\nimport { makeShareableShadowNodeWrapper } from './reanimated2/shareables';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\nfunction maybeBuild(\n layoutAnimationOrBuilder:\n | ILayoutAnimationBuilder\n | LayoutAnimationFunction\n | Keyframe\n): LayoutAnimationFunction | Keyframe {\n const isAnimationBuilder = (\n value: ILayoutAnimationBuilder | LayoutAnimationFunction | Keyframe\n ): value is ILayoutAnimationBuilder =>\n 'build' in layoutAnimationOrBuilder &&\n typeof layoutAnimationOrBuilder.build === 'function';\n\n if (isAnimationBuilder(layoutAnimationOrBuilder)) {\n return layoutAnimationOrBuilder.build();\n } else {\n return layoutAnimationOrBuilder;\n }\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 _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 }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\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 = makeShareableShadowNodeWrapper(\n getShadowNodeWrapperFromRef(this)\n );\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 const { layout, entering, exiting } = this.props;\n if ((layout || entering || exiting) && tag != null) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n if (layout) {\n configureLayoutAnimations(tag, 'layout', maybeBuild(layout));\n }\n if (entering) {\n configureLayoutAnimations(tag, 'entering', maybeBuild(entering));\n }\n if (exiting) {\n configureLayoutAnimations(tag, 'exiting', maybeBuild(exiting));\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":["dummyListener","maybeBuild","layoutAnimationOrBuilder","isAnimationBuilder","value","build","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","isInlineStyleTransform","transform","some","t","hasInlineStyles","Object","keys","styleValue","isSharedValue","extractSharedValuesMapFromProps","props","inlineProps","entries","inlinePropsHasChanged","styles1","styles2","length","getInlinePropsUpdate","update","map","createAnimatedComponent","Component","options","invariant","prototype","isReactComponent","AnimatedComponent","React","constructor","setAndForwardRef","getForwardedRef","forwardedRef","setLocalRef","ref","tag","findNodeHandle","layout","entering","exiting","sharedTransitionTag","shouldBeUseWeb","enableLayoutAnimations","configureLayoutAnimations","LayoutAnimationType","LAYOUT","ENTERING","EXITING","sharedElementTransition","sharedTransitionStyle","DefaultSharedTransition","SHARED_ELEMENT_TRANSITION","_component","isJest","animatedStyle","componentWillUnmount","_detachNativeEvents","_detachStyles","_detachInlineProps","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","_attachInlineProps","_getEventViewRef","getScrollableNode","node","viewTag","setNativeProps","prop","current","WorkletEventHandler","registerForEvents","unregisterFromEvents","Platform","OS","_styles","remove","_viewTag","animatedProps","global","_IS_FABRIC","runOnUI","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","_getViewInfo","viewName","shadowNodeWrapper","viewConfig","hostInstance","RNRenderer","findHostInstance_DEPRECATED","Error","_nativeTag","uiViewClassName","getShadowNodeWrapperFromRef","prevStyles","prevAnimatedProps","_animatedProps","hasReanimated2Props","adaptViewConfig","hasOneSameStyle","prevStyle","isPresent","add","name","initial","newInlineProps","hasChanged","_inlineProps","_inlinePropsViewDescriptors","makeViewDescriptorsSet","sharableViewDescriptors","maybeViewRef","NativeReanimatedModule","native","items","Set","updaterFunction","updateProps","_inlinePropsMapperId","stopMapper","startMapper","values","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","_isFirstRender","initialStyle","initialUpdaterRun","updater","newStyle","StyleSheet","flatten","animatedProp","eventNames","eventName","listeners","isChromeDebugger","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/animationsManager';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n configureLayoutAnimations,\n enableLayoutAnimations,\n runOnUI,\n startMapper,\n stopMapper,\n} from './reanimated2/core';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n DefaultSharedTransition,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n LayoutAnimationFunction,\n LayoutAnimationType,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n makeViewDescriptorsSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\nimport updateProps from './reanimated2/UpdateProps';\nimport NativeReanimatedModule from './reanimated2/NativeReanimated';\nimport { isSharedValue } from './reanimated2';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\nfunction maybeBuild(\n layoutAnimationOrBuilder:\n | ILayoutAnimationBuilder\n | LayoutAnimationFunction\n | Keyframe\n): LayoutAnimationFunction | Keyframe {\n const isAnimationBuilder = (\n value: ILayoutAnimationBuilder | LayoutAnimationFunction | Keyframe\n ): value is ILayoutAnimationBuilder =>\n 'build' in layoutAnimationOrBuilder &&\n typeof layoutAnimationOrBuilder.build === 'function';\n\n if (isAnimationBuilder(layoutAnimationOrBuilder)) {\n return layoutAnimationOrBuilder.build();\n } else {\n return layoutAnimationOrBuilder;\n }\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\nfunction isInlineStyleTransform(transform: any): boolean {\n if (!transform) {\n return false;\n }\n return transform.some((t: Record<string, any>) => hasInlineStyles(t));\n}\n\nfunction hasInlineStyles(style: StyleProps): boolean {\n if (!style) {\n return false;\n }\n return Object.keys(style).some((key) => {\n const styleValue = style[key];\n return (\n isSharedValue(styleValue) ||\n (key === 'transform' && isInlineStyleTransform(styleValue))\n );\n });\n}\n\nfunction extractSharedValuesMapFromProps(\n props: AnimatedComponentProps<InitialComponentProps>\n): Record<string, any> {\n const inlineProps: Record<string, any> = {};\n\n for (const key in props) {\n const value = props[key];\n if (key === 'style') {\n const styles = flattenArray<StyleProps>(props.style ?? []);\n styles.forEach((style) => {\n if (!style) {\n return;\n }\n for (const [key, styleValue] of Object.entries(style)) {\n if (isSharedValue(styleValue)) {\n inlineProps[key] = styleValue;\n } else if (\n key === 'transform' &&\n isInlineStyleTransform(styleValue)\n ) {\n inlineProps[key] = styleValue;\n }\n }\n });\n } else if (isSharedValue(value)) {\n inlineProps[key] = value;\n }\n }\n\n return inlineProps;\n}\n\nfunction inlinePropsHasChanged(styles1: StyleProps, styles2: StyleProps) {\n if (Object.keys(styles1).length !== Object.keys(styles2).length) {\n return true;\n }\n\n for (const key of Object.keys(styles1)) {\n if (styles1[key] !== styles2[key]) return true;\n }\n\n return false;\n}\n\nfunction getInlinePropsUpdate(inlineProps: Record<string, any>) {\n 'worklet';\n const update: Record<string, any> = {};\n for (const [key, styleValue] of Object.entries(inlineProps)) {\n if (key === 'transform') {\n update[key] = styleValue.map((transform: Record<string, any>) => {\n return getInlinePropsUpdate(transform);\n });\n } else if (isSharedValue(styleValue)) {\n update[key] = styleValue.value;\n } else {\n update[key] = styleValue;\n }\n }\n return update;\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 sharedTransitionTag?: string;\n sharedTransitionStyle?: ILayoutAnimationBuilder;\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 _component: ComponentRef | null = null;\n _inlinePropsViewDescriptors: ViewDescriptorsSet | null = null;\n _inlinePropsMapperId: number | null = null;\n _inlineProps: StyleProps = {};\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this._detachInlineProps();\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n this._attachInlineProps();\n }\n\n _getEventViewRef() {\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n return this._component?.getScrollableNode\n ? this._component.getScrollableNode()\n : this._component;\n }\n\n _attachNativeEvents() {\n const node = this._getEventViewRef();\n const viewTag = findNodeHandle(options?.setNativeProps ? this : node);\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 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 viewTag = this._viewTag;\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(viewTag);\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 _getViewInfo() {\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n let viewConfig;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n viewConfig = 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\n viewConfig = hostInstance?.viewConfig;\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n return { viewTag, viewName, shadowNodeWrapper, viewConfig };\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 const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && viewConfig) {\n adaptViewConfig(viewConfig);\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 _attachInlineProps() {\n const newInlineProps: Record<string, any> =\n extractSharedValuesMapFromProps(this.props);\n const hasChanged = inlinePropsHasChanged(\n newInlineProps,\n this._inlineProps\n );\n\n if (hasChanged) {\n if (!this._inlinePropsViewDescriptors) {\n this._inlinePropsViewDescriptors = makeViewDescriptorsSet();\n\n const { viewTag, viewName, shadowNodeWrapper, viewConfig } =\n this._getViewInfo();\n\n if (Object.keys(newInlineProps).length && viewConfig) {\n adaptViewConfig(viewConfig);\n }\n\n this._inlinePropsViewDescriptors.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 const sharableViewDescriptors =\n this._inlinePropsViewDescriptors.sharableViewDescriptors;\n\n const maybeViewRef = NativeReanimatedModule.native\n ? undefined\n : ({ items: new Set([this]) } as ViewRefSet<any>); // see makeViewsRefSet\n\n const updaterFunction = () => {\n 'worklet';\n const update = getInlinePropsUpdate(newInlineProps);\n updateProps(sharableViewDescriptors, update, maybeViewRef);\n };\n this._inlineProps = newInlineProps;\n if (this._inlinePropsMapperId) {\n stopMapper(this._inlinePropsMapperId);\n }\n this._inlinePropsMapperId = null;\n if (Object.keys(newInlineProps).length) {\n this._inlinePropsMapperId = startMapper(\n updaterFunction,\n Object.values(newInlineProps)\n );\n }\n }\n }\n\n _detachInlineProps() {\n if (this._inlinePropsMapperId) {\n stopMapper(this._inlinePropsMapperId);\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n this._attachInlineProps();\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 const { layout, entering, exiting, sharedTransitionTag } = this.props;\n if (\n (layout || entering || exiting || sharedTransitionTag) &&\n tag != null\n ) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n if (layout) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.LAYOUT,\n maybeBuild(layout)\n );\n }\n if (entering) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.ENTERING,\n maybeBuild(entering)\n );\n }\n if (exiting) {\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.EXITING,\n maybeBuild(exiting)\n );\n }\n if (sharedTransitionTag) {\n const sharedElementTransition =\n this.props.sharedTransitionStyle ?? DefaultSharedTransition;\n configureLayoutAnimations(\n tag,\n LayoutAnimationType.SHARED_ELEMENT_TRANSITION,\n maybeBuild(sharedElementTransition),\n sharedTransitionTag\n );\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 if (hasInlineStyles(style)) {\n if (this._isFirstRender) {\n return getInlinePropsUpdate(style);\n }\n const newStyle: StyleProps = {};\n for (const [key, styleValue] of Object.entries(style)) {\n if (\n !isSharedValue(styleValue) &&\n !(key === 'transform' && isInlineStyleTransform(styleValue))\n ) {\n newStyle[key] = styleValue;\n }\n }\n return newStyle;\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 (isSharedValue(value)) {\n if (this._isFirstRender) {\n props[key] = (value as SharedValue<any>).value;\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":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAOA;;AAKA;;AACA;;AAaA;;AAKA;;AACA;;AACA;;AACA;;;;;;;;AAEA,SAASA,aAAT,GAAyB,CACvB;EACA;AACD;;AAED,SAASC,UAAT,CACEC,wBADF,EAKsC;EACpC,MAAMC,kBAAkB,GACtBC,KADyB,IAGzB,WAAWF,wBAAX,IACA,OAAOA,wBAAwB,CAACG,KAAhC,KAA0C,UAJ5C;;EAMA,IAAIF,kBAAkB,CAACD,wBAAD,CAAtB,EAAkD;IAChD,OAAOA,wBAAwB,CAACG,KAAzB,EAAP;EACD,CAFD,MAEO;IACL,OAAOH,wBAAP;EACD;AACF;;AAGD,SAASI,YAAT,CAAyBC,KAAzB,EAAqD;EACnD,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAL,EAA2B;IACzB,OAAO,CAACA,KAAD,CAAP;EACD;;EACD,MAAMG,SAAc,GAAG,EAAvB;;EAEA,MAAMC,aAAa,GAAIC,GAAD,IAAiC;IACrDA,GAAG,CAACC,OAAJ,CAAaC,IAAD,IAAU;MACpB,IAAIN,KAAK,CAACC,OAAN,CAAcK,IAAd,CAAJ,EAAyB;QACvBH,aAAa,CAACG,IAAD,CAAb;MACD,CAFD,MAEO;QACLJ,SAAS,CAACK,IAAV,CAAeD,IAAf;MACD;IACF,CAND;EAOD,CARD;;EASAH,aAAa,CAACJ,KAAD,CAAb;;EACA,OAAOG,SAAP;AACD;;AAED,SAASM,kBAAT,CAA4BC,MAA5B,EAAkD;EAChD,OAAOA,MAAM,CAACC,MAAP,CAAeC,KAAD,IAAWA,KAAX,aAAWA,KAAX,uBAAWA,KAAK,CAAEC,eAAhC,CAAP;AACD;;AAED,SAASC,mBAAT,CACEC,MADF,EAEEC,MAFF,EAGW;EACT;EACA;EACA,OAAO,CAAAD,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEE,QAAR,OAAqBD,MAArB,aAAqBA,MAArB,uBAAqBA,MAAM,CAAEC,QAA7B,CAAP;AACD;;AAED,MAAMC,mBAAmB,GAAGJ,mBAA5B;;AAEA,MAAMK,GAAG,GAAG,CACVC,GADU,EAEVC,CAFU,KAGuB;EACjC,IAAI,OAAOA,CAAP,KAAa,UAAb,IAA2B,OAAOA,CAAP,KAAa,QAA5C,EAAsD;IACpD,IAAIA,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKC,SAAxB,EAAmC;MACjC,OAAO,KAAP;IACD,CAFD,MAEO;MACL,OAAOF,GAAG,IAAIC,CAAd;IACD;EACF;;EACD,OAAO,KAAP;AACD,CAZD;;AAcA,SAASE,sBAAT,CAAgCC,SAAhC,EAAyD;EACvD,IAAI,CAACA,SAAL,EAAgB;IACd,OAAO,KAAP;EACD;;EACD,OAAOA,SAAS,CAACC,IAAV,CAAgBC,CAAD,IAA4BC,eAAe,CAACD,CAAD,CAA1D,CAAP;AACD;;AAED,SAASC,eAAT,CAAyBf,KAAzB,EAAqD;EACnD,IAAI,CAACA,KAAL,EAAY;IACV,OAAO,KAAP;EACD;;EACD,OAAOgB,MAAM,CAACC,IAAP,CAAYjB,KAAZ,EAAmBa,IAAnB,CAAyBL,GAAD,IAAS;IACtC,MAAMU,UAAU,GAAGlB,KAAK,CAACQ,GAAD,CAAxB;IACA,OACE,IAAAW,yBAAA,EAAcD,UAAd,KACCV,GAAG,KAAK,WAAR,IAAuBG,sBAAsB,CAACO,UAAD,CAFhD;EAID,CANM,CAAP;AAOD;;AAED,SAASE,+BAAT,CACEC,KADF,EAEuB;EACrB,MAAMC,WAAgC,GAAG,EAAzC;;EAEA,KAAK,MAAMd,GAAX,IAAkBa,KAAlB,EAAyB;IACvB,MAAMpC,KAAK,GAAGoC,KAAK,CAACb,GAAD,CAAnB;;IACA,IAAIA,GAAG,KAAK,OAAZ,EAAqB;MACnB,MAAMV,MAAM,GAAGX,YAAY,CAAakC,KAAK,CAACrB,KAAN,IAAe,EAA5B,CAA3B;MACAF,MAAM,CAACJ,OAAP,CAAgBM,KAAD,IAAW;QACxB,IAAI,CAACA,KAAL,EAAY;UACV;QACD;;QACD,KAAK,MAAM,CAACQ,GAAD,EAAMU,UAAN,CAAX,IAAgCF,MAAM,CAACO,OAAP,CAAevB,KAAf,CAAhC,EAAuD;UACrD,IAAI,IAAAmB,yBAAA,EAAcD,UAAd,CAAJ,EAA+B;YAC7BI,WAAW,CAACd,GAAD,CAAX,GAAmBU,UAAnB;UACD,CAFD,MAEO,IACLV,GAAG,KAAK,WAAR,IACAG,sBAAsB,CAACO,UAAD,CAFjB,EAGL;YACAI,WAAW,CAACd,GAAD,CAAX,GAAmBU,UAAnB;UACD;QACF;MACF,CAdD;IAeD,CAjBD,MAiBO,IAAI,IAAAC,yBAAA,EAAclC,KAAd,CAAJ,EAA0B;MAC/BqC,WAAW,CAACd,GAAD,CAAX,GAAmBvB,KAAnB;IACD;EACF;;EAED,OAAOqC,WAAP;AACD;;AAED,SAASE,qBAAT,CAA+BC,OAA/B,EAAoDC,OAApD,EAAyE;EACvE,IAAIV,MAAM,CAACC,IAAP,CAAYQ,OAAZ,EAAqBE,MAArB,KAAgCX,MAAM,CAACC,IAAP,CAAYS,OAAZ,EAAqBC,MAAzD,EAAiE;IAC/D,OAAO,IAAP;EACD;;EAED,KAAK,MAAMnB,GAAX,IAAkBQ,MAAM,CAACC,IAAP,CAAYQ,OAAZ,CAAlB,EAAwC;IACtC,IAAIA,OAAO,CAACjB,GAAD,CAAP,KAAiBkB,OAAO,CAAClB,GAAD,CAA5B,EAAmC,OAAO,IAAP;EACpC;;EAED,OAAO,KAAP;AACD;;AAED,SAASoB,oBAAT,CAA8BN,WAA9B,EAAgE;EAC9D;;EACA,MAAMO,MAA2B,GAAG,EAApC;;EACA,KAAK,MAAM,CAACrB,GAAD,EAAMU,UAAN,CAAX,IAAgCF,MAAM,CAACO,OAAP,CAAeD,WAAf,CAAhC,EAA6D;IAC3D,IAAId,GAAG,KAAK,WAAZ,EAAyB;MACvBqB,MAAM,CAACrB,GAAD,CAAN,GAAcU,UAAU,CAACY,GAAX,CAAgBlB,SAAD,IAAoC;QAC/D,OAAOgB,oBAAoB,CAAChB,SAAD,CAA3B;MACD,CAFa,CAAd;IAGD,CAJD,MAIO,IAAI,IAAAO,yBAAA,EAAcD,UAAd,CAAJ,EAA+B;MACpCW,MAAM,CAACrB,GAAD,CAAN,GAAcU,UAAU,CAACjC,KAAzB;IACD,CAFM,MAEA;MACL4C,MAAM,CAACrB,GAAD,CAAN,GAAcU,UAAd;IACD;EACF;;EACD,OAAOW,MAAP;AACD;;AA6Cc,SAASE,uBAAT,CACbC,SADa,EAEbC,OAFa,EAGiD;EAC9D,IAAAC,kBAAA,EACE,OAAOF,SAAP,KAAqB,UAArB,IACGA,SAAS,CAACG,SAAV,IAAuBH,SAAS,CAACG,SAAV,CAAoBC,gBAFhD,EAGE,iFACE,gCAJJ;;EAOA,MAAMC,iBAAN,SAAgCC,cAAA,CAAMN,SAAtC,CAEE;IAaAO,WAAW,CAAClB,KAAD,EAAuD;MAChE,MAAMA,KAAN;;MADgE,iCAZnC,IAYmC;;MAAA;;MAAA,kCAVvD,CAAC,CAUsD;;MAAA,wCATjD,IASiD;;MAAA,uCAR3B;QAAEpC,KAAK,EAAE;MAAT,CAQ2B;;MAAA,sCAPnD,EAOmD;;MAAA,oCANhC,IAMgC;;MAAA,qDALT,IAKS;;MAAA,8CAJ5B,IAI4B;;MAAA,sCAHvC,EAGuC;;MAAA,0CA6T/C,IAAAuD,yBAAA,EAA4B;QAC7CC,eAAe,EAAE,MACf,KAAKpB,KAAL,CAAWqB,YAFgC;QAK7CC,WAAW,EAAGC,GAAD,IAAS;UACpB;UACA,MAAMC,GAAG,GAAG,IAAAC,2BAAA,EAAeF,GAAf,CAAZ;UACA,MAAM;YAAEG,MAAF;YAAUC,QAAV;YAAoBC,OAApB;YAA6BC;UAA7B,IAAqD,KAAK7B,KAAhE;;UACA,IACE,CAAC0B,MAAM,IAAIC,QAAV,IAAsBC,OAAtB,IAAiCC,mBAAlC,KACAL,GAAG,IAAI,IAFT,EAGE;YACA,IAAI,CAAC,IAAAM,+BAAA,GAAL,EAAuB;cACrB,IAAAC,4BAAA,EAAuB,IAAvB,EAA6B,KAA7B;YACD;;YACD,IAAIL,MAAJ,EAAY;cACV,IAAAM,+BAAA,EACER,GADF,EAEES,sCAAA,CAAoBC,MAFtB,EAGEzE,UAAU,CAACiE,MAAD,CAHZ;YAKD;;YACD,IAAIC,QAAJ,EAAc;cACZ,IAAAK,+BAAA,EACER,GADF,EAEES,sCAAA,CAAoBE,QAFtB,EAGE1E,UAAU,CAACkE,QAAD,CAHZ;YAKD;;YACD,IAAIC,OAAJ,EAAa;cACX,IAAAI,+BAAA,EACER,GADF,EAEES,sCAAA,CAAoBG,OAFtB,EAGE3E,UAAU,CAACmE,OAAD,CAHZ;YAKD;;YACD,IAAIC,mBAAJ,EAAyB;cACvB,MAAMQ,uBAAuB,GAC3B,KAAKrC,KAAL,CAAWsC,qBAAX,IAAoCC,0CADtC;cAEA,IAAAP,+BAAA,EACER,GADF,EAEES,sCAAA,CAAoBO,yBAFtB,EAGE/E,UAAU,CAAC4E,uBAAD,CAHZ,EAIER,mBAJF;YAMD;UACF;;UAED,IAAIN,GAAG,KAAK,KAAKkB,UAAjB,EAA6B;YAC3B,KAAKA,UAAL,GAAkBlB,GAAlB;UACD;QACF;MApD4C,CAA5B,CA7T+C;;MAEhE,IAAI,IAAAmB,uBAAA,GAAJ,EAAc;QACZ,KAAKC,aAAL,GAAqB;UAAE/E,KAAK,EAAE;QAAT,CAArB;MACD;IACF;;IAEDgF,oBAAoB,GAAG;MACrB,KAAKC,mBAAL;;MACA,KAAKC,aAAL;;MACA,KAAKC,kBAAL;IACD;;IAEDC,iBAAiB,GAAG;MAClB,KAAKC,mBAAL;;MACA,KAAKC,qBAAL;;MACA,KAAKC,kBAAL;IACD;;IAEDC,gBAAgB,GAAG;MAAA;;MACjB;MACA;MACA,OAAO,yBAAKX,UAAL,8DAAiBY,iBAAjB,GACH,KAAKZ,UAAL,CAAgBY,iBAAhB,EADG,GAEH,KAAKZ,UAFT;IAGD;;IAEDQ,mBAAmB,GAAG;MACpB,MAAMK,IAAI,GAAG,KAAKF,gBAAL,EAAb;;MACA,MAAMG,OAAO,GAAG,IAAA9B,2BAAA,EAAeb,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAE4C,cAAT,GAA0B,IAA1B,GAAiCF,IAAhD,CAAhB;;MAEA,KAAK,MAAMnE,GAAX,IAAkB,KAAKa,KAAvB,EAA8B;QAC5B,MAAMyD,IAAI,GAAG,KAAKzD,KAAL,CAAWb,GAAX,CAAb;;QACA,IACED,GAAG,CAAC,SAAD,EAAYuE,IAAZ,CAAH,IACAA,IAAI,CAACC,OAAL,YAAwBC,4BAF1B,EAGE;UACAF,IAAI,CAACC,OAAL,CAAaE,iBAAb,CAA+BL,OAA/B,EAAkDpE,GAAlD;QACD;MACF;IACF;;IAED0D,mBAAmB,GAAG;MACpB,KAAK,MAAM1D,GAAX,IAAkB,KAAKa,KAAvB,EAA8B;QAC5B,MAAMyD,IAAI,GAAG,KAAKzD,KAAL,CAAWb,GAAX,CAAb;;QACA,IACED,GAAG,CAAC,SAAD,EAAYuE,IAAZ,CAAH,IACAA,IAAI,CAACC,OAAL,YAAwBC,4BAF1B,EAGE;UACAF,IAAI,CAACC,OAAL,CAAaG,oBAAb;QACD;MACF;IACF;;IAEDf,aAAa,GAAG;MACd,IAAIgB,qBAAA,CAASC,EAAT,KAAgB,KAAhB,IAAyB,KAAKC,OAAL,KAAiB,IAA9C,EAAoD;QAClD,KAAK,MAAMrF,KAAX,IAAoB,KAAKqF,OAAzB,EAAkC;UAChC,IAAIrF,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEK,QAAX,EAAqB;YACnBL,KAAK,CAACK,QAAN,CAAeiF,MAAf,CAAsB,IAAtB;UACD;QACF;MACF,CAND,MAMO,IAAI,KAAKC,QAAL,KAAkB,CAAC,CAAnB,IAAwB,KAAKF,OAAL,KAAiB,IAA7C,EAAmD;QAAA;;QACxD,KAAK,MAAMrF,KAAX,IAAoB,KAAKqF,OAAzB,EAAkC;UAChCrF,KAAK,CAACC,eAAN,CAAsBqF,MAAtB,CAA6B,KAAKC,QAAlC;QACD;;QACD,6BAAI,KAAKlE,KAAL,CAAWmE,aAAf,kDAAI,sBAA0BvF,eAA9B,EAA+C;UAC7C,KAAKoB,KAAL,CAAWmE,aAAX,CAAyBvF,eAAzB,CAAyCqF,MAAzC,CAAgD,KAAKC,QAArD;QACD;;QACD,IAAIE,MAAM,CAACC,UAAX,EAAuB;UACrB,MAAMd,OAAO,GAAG,KAAKW,QAArB;UACA,IAAAI,aAAA,EAAQ,MAAM;YACZ;;YACAC,6BAA6B,CAAChB,OAAD,CAA7B;UACD,CAHD;QAID;MACF;IACF;;IAEDiB,qBAAqB,CACnBC,SADmB,EAEnB;MACA,IAAIlB,OAAJ;;MAEA,KAAK,MAAMpE,GAAX,IAAkB,KAAKa,KAAvB,EAA8B;QAC5B,MAAMyD,IAAI,GAAG,KAAKzD,KAAL,CAAWb,GAAX,CAAb;;QACA,IACED,GAAG,CAAC,SAAD,EAAYuE,IAAZ,CAAH,IACAA,IAAI,CAACC,OAAL,YAAwBC,4BAF1B,EAGE;UACA,IAAIJ,OAAO,KAAKlE,SAAhB,EAA2B;YACzBkE,OAAO,GAAGE,IAAI,CAACC,OAAL,CAAaH,OAAvB;UACD;QACF;MACF;;MACD,KAAK,MAAMpE,GAAX,IAAkBsF,SAAlB,EAA6B;QAC3B,MAAMhB,IAAI,GAAG,KAAKzD,KAAL,CAAWb,GAAX,CAAb;;QACA,IACED,GAAG,CAAC,SAAD,EAAYuE,IAAZ,CAAH,IACAA,IAAI,CAACC,OAAL,YAAwBC,4BADxB,IAEAF,IAAI,CAACC,OAAL,CAAagB,cAHf,EAIE;UACAjB,IAAI,CAACC,OAAL,CAAaG,oBAAb;QACD;MACF;;MAED,KAAK,MAAM1E,GAAX,IAAkB,KAAKa,KAAvB,EAA8B;QAC5B,MAAMyD,IAAI,GAAG,KAAKzD,KAAL,CAAWb,GAAX,CAAb;;QACA,IACED,GAAG,CAAC,SAAD,EAAYuE,IAAZ,CAAH,IACAA,IAAI,CAACC,OAAL,YAAwBC,4BADxB,IAEAF,IAAI,CAACC,OAAL,CAAagB,cAHf,EAIE;UACA;UACAjB,IAAI,CAACC,OAAL,CAAaE,iBAAb,CAA+BL,OAA/B,EAAyCpE,GAAzC;UACAsE,IAAI,CAACC,OAAL,CAAagB,cAAb,GAA8B,KAA9B;QACD;MACF;IACF;;IAEDC,iBAAiB,CAAC3E,KAAD,EAAoB;MACnC,IAAIY,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAE4C,cAAb,EAA6B;QAC3B;QACA5C,OAAO,CAAC4C,cAAR,CAAuB,KAAKf,UAA5B,EAAyCzC,KAAzC;MACD,CAHD,MAGO;QAAA;;QACL;QACA,0BAAKyC,UAAL,iGAAiBe,cAAjB,wGAAkCxD,KAAlC;MACD;IACF;;IAED4E,YAAY,GAAG;MACb,IAAIrB,OAAJ;MACA,IAAIsB,QAAJ;MACA,IAAIC,iBAA2C,GAAG,IAAlD;MACA,IAAIC,UAAJ;;MACA,IAAIjB,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2B;QACzBR,OAAO,GAAG,IAAA9B,2BAAA,EAAe,IAAf,CAAV;QACAoD,QAAQ,GAAG,IAAX;QACAC,iBAAiB,GAAG,IAApB;QACAC,UAAU,GAAG,IAAb;MACD,CALD,MAKO;QAAA;;QACL;QACA,MAAMC,YAAY,GAAGC,sBAAA,CAAWC,2BAAX,CAAuC,IAAvC,CAArB;;QACA,IAAI,CAACF,YAAL,EAAmB;UACjB,MAAM,IAAIG,KAAJ,CACJ,yEADI,CAAN;QAGD,CAPI,CAQL;;;QACA5B,OAAO,GAAGyB,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAEI,UAAxB;QACA;AACR;AACA;AACA;;QACQP,QAAQ,GAAGG,YAAH,aAAGA,YAAH,gDAAGA,YAAY,CAAED,UAAjB,0DAAG,sBAA0BM,eAArC;QAEAN,UAAU,GAAGC,YAAH,aAAGA,YAAH,uBAAGA,YAAY,CAAED,UAA3B;;QAEA,IAAIX,MAAM,CAACC,UAAX,EAAuB;UACrBS,iBAAiB,GAAG,IAAAQ,wCAAA,EAA4B,IAA5B,CAApB;QACD;MACF;;MACD,OAAO;QAAE/B,OAAF;QAAWsB,QAAX;QAAqBC,iBAArB;QAAwCC;MAAxC,CAAP;IACD;;IAED7B,qBAAqB,GAAG;MAAA;;MACtB,MAAMzE,MAAM,GAAG,KAAKuB,KAAL,CAAWrB,KAAX,GACXH,kBAAkB,CAACV,YAAY,CAAa,KAAKkC,KAAL,CAAWrB,KAAxB,CAAb,CADP,GAEX,EAFJ;MAGA,MAAM4G,UAAU,GAAG,KAAKvB,OAAxB;MACA,KAAKA,OAAL,GAAevF,MAAf;MAEA,MAAM+G,iBAAiB,GAAG,KAAKC,cAA/B;MACA,KAAKA,cAAL,GAAsB,KAAKzF,KAAL,CAAWmE,aAAjC;;MAEA,MAAM;QAAEZ,OAAF;QAAWsB,QAAX;QAAqBC,iBAArB;QAAwCC;MAAxC,IACJ,KAAKH,YAAL,EADF,CAVsB,CAatB;;;MACA,MAAMc,mBAAmB,GACvB,gCAAK1F,KAAL,CAAWmE,aAAX,kFAA0BvF,eAA1B,KAA6CH,MAAM,CAAC6B,MADtD;;MAEA,IAAIoF,mBAAmB,IAAIX,UAA3B,EAAuC;QACrC,IAAAY,6BAAA,EAAgBZ,UAAhB;MACD;;MAED,KAAKb,QAAL,GAAgBX,OAAhB,CApBsB,CAsBtB;;MACA,IAAIgC,UAAJ,EAAgB;QACd;QACA,MAAMK,eAAe,GACnBnH,MAAM,CAAC6B,MAAP,KAAkB,CAAlB,IACAiF,UAAU,CAACjF,MAAX,KAAsB,CADtB,IAEAzB,mBAAmB,CAACJ,MAAM,CAAC,CAAD,CAAP,EAAY8G,UAAU,CAAC,CAAD,CAAtB,CAHrB;;QAKA,IAAI,CAACK,eAAL,EAAsB;UACpB;UACA,KAAK,MAAMC,SAAX,IAAwBN,UAAxB,EAAoC;YAClC,MAAMO,SAAS,GAAGrH,MAAM,CAACe,IAAP,CAAab,KAAD,IAC5BE,mBAAmB,CAACF,KAAD,EAAQkH,SAAR,CADH,CAAlB;;YAGA,IAAI,CAACC,SAAL,EAAgB;cACdD,SAAS,CAACjH,eAAV,CAA0BqF,MAA1B,CAAiCV,OAAjC;YACD;UACF;QACF;MACF;;MAED9E,MAAM,CAACJ,OAAP,CAAgBM,KAAD,IAAW;QACxBA,KAAK,CAACC,eAAN,CAAsBmH,GAAtB,CAA0B;UACxBvE,GAAG,EAAE+B,OADmB;UAExByC,IAAI,EAAEnB,QAFkB;UAGxBC;QAHwB,CAA1B;;QAKA,IAAI,IAAApC,uBAAA,GAAJ,EAAc;UACZ;AACV;AACA;AACA;AACA;AACA;UACU,KAAKC,aAAL,CAAmB/E,KAAnB,GAA2B,EACzB,GAAG,KAAK+E,aAAL,CAAmB/E,KADG;YAEzB,GAAGe,KAAK,CAACsH,OAAN,CAAcrI;UAFQ,CAA3B;UAIAe,KAAK,CAACgE,aAAN,CAAoBe,OAApB,GAA8B,KAAKf,aAAnC;QACD;MACF,CAnBD,EA3CsB,CAgEtB;;MACA,IACE6C,iBAAiB,IACjB,CAACvG,mBAAmB,CAACuG,iBAAD,EAAoB,KAAKxF,KAAL,CAAWmE,aAA/B,CAFtB,EAGE;QACAqB,iBAAiB,CAAC5G,eAAlB,CAAmCqF,MAAnC,CAA0CV,OAA1C;MACD,CAtEqB,CAwEtB;;;MACA,8BAAI,KAAKvD,KAAL,CAAWmE,aAAf,mDAAI,uBAA0BvF,eAA9B,EAA+C;QAC7C,KAAKoB,KAAL,CAAWmE,aAAX,CAAyBvF,eAAzB,CAAyCmH,GAAzC,CAA6C;UAC3C;UACAvE,GAAG,EAAE+B,OAFsC;UAG3C;UACAyC,IAAI,EAAEnB,QAJqC;UAK3C;UACAC,iBAAiB,EAAEA;QANwB,CAA7C;MAQD;IACF;;IAED3B,kBAAkB,GAAG;MACnB,MAAM+C,cAAmC,GACvCnG,+BAA+B,CAAC,KAAKC,KAAN,CADjC;MAEA,MAAMmG,UAAU,GAAGhG,qBAAqB,CACtC+F,cADsC,EAEtC,KAAKE,YAFiC,CAAxC;;MAKA,IAAID,UAAJ,EAAgB;QACd,IAAI,CAAC,KAAKE,2BAAV,EAAuC;UACrC,KAAKA,2BAAL,GAAmC,IAAAC,0CAAA,GAAnC;;UAEA,MAAM;YAAE/C,OAAF;YAAWsB,QAAX;YAAqBC,iBAArB;YAAwCC;UAAxC,IACJ,KAAKH,YAAL,EADF;;UAGA,IAAIjF,MAAM,CAACC,IAAP,CAAYsG,cAAZ,EAA4B5F,MAA5B,IAAsCyE,UAA1C,EAAsD;YACpD,IAAAY,6BAAA,EAAgBZ,UAAhB;UACD;;UAED,KAAKsB,2BAAL,CAAiCN,GAAjC,CAAqC;YACnC;YACAvE,GAAG,EAAE+B,OAF8B;YAGnC;YACAyC,IAAI,EAAEnB,QAJ6B;YAKnC;YACAC,iBAAiB,EAAEA;UANgB,CAArC;QAQD;;QACD,MAAMyB,uBAAuB,GAC3B,KAAKF,2BAAL,CAAiCE,uBADnC;QAGA,MAAMC,YAAY,GAAGC,yBAAA,CAAuBC,MAAvB,GACjBrH,SADiB,GAEhB;UAAEsH,KAAK,EAAE,IAAIC,GAAJ,CAAQ,CAAC,IAAD,CAAR;QAAT,CAFL,CAvBc,CAyBuC;;QAErD,MAAMC,eAAe,GAAG,MAAM;UAC5B;;UACA,MAAMrG,MAAM,GAAGD,oBAAoB,CAAC2F,cAAD,CAAnC;UACA,IAAAY,oBAAA,EAAYP,uBAAZ,EAAqC/F,MAArC,EAA6CgG,YAA7C;QACD,CAJD;;QAKA,KAAKJ,YAAL,GAAoBF,cAApB;;QACA,IAAI,KAAKa,oBAAT,EAA+B;UAC7B,IAAAC,gBAAA,EAAW,KAAKD,oBAAhB;QACD;;QACD,KAAKA,oBAAL,GAA4B,IAA5B;;QACA,IAAIpH,MAAM,CAACC,IAAP,CAAYsG,cAAZ,EAA4B5F,MAAhC,EAAwC;UACtC,KAAKyG,oBAAL,GAA4B,IAAAE,iBAAA,EAC1BJ,eAD0B,EAE1BlH,MAAM,CAACuH,MAAP,CAAchB,cAAd,CAF0B,CAA5B;QAID;MACF;IACF;;IAEDnD,kBAAkB,GAAG;MACnB,IAAI,KAAKgE,oBAAT,EAA+B;QAC7B,IAAAC,gBAAA,EAAW,KAAKD,oBAAhB;MACD;IACF;;IAEDI,kBAAkB,CAChB1C,SADgB,EAEhB;MACA,KAAKD,qBAAL,CAA2BC,SAA3B;;MACA,KAAKvB,qBAAL;;MACA,KAAKC,kBAAL;IACD;;IAyDDiE,uBAAuB,CACrBC,UADqB,EAEI;MACzB,MAAMrH,KAA8B,GAAG,EAAvC;;MACA,KAAK,MAAMb,GAAX,IAAkBkI,UAAlB,EAA8B;QAC5B,MAAMzJ,KAAK,GAAGyJ,UAAU,CAAClI,GAAD,CAAxB;;QACA,IAAIA,GAAG,KAAK,OAAZ,EAAqB;UACnB,MAAMmI,SAAS,GAAGD,UAAU,CAAC1I,KAA7B;UACA,MAAMF,MAAM,GAAGX,YAAY,CAAawJ,SAAS,IAAI,EAA1B,CAA3B;UACA,MAAMC,cAA0B,GAAG9I,MAAM,CAACgC,GAAP,CAAY9B,KAAD,IAAW;YACvD,IAAIA,KAAK,IAAIA,KAAK,CAACC,eAAnB,EAAoC;cAClC;cACAD,KAAK,CAACK,QAAN,CAAe+G,GAAf,CAAmB,IAAnB;;cACA,IAAI,KAAKyB,cAAT,EAAyB;gBACvB,KAAKC,YAAL,GAAoB,EAClB,GAAG9I,KAAK,CAACsH,OAAN,CAAcrI,KADC;kBAElB,GAAG,IAAA8J,4BAAA,EAA8B/I,KAAK,CAACsH,OAAN,CAAc0B,OAA5C;gBAFe,CAApB;cAID;;cACD,OAAO,KAAKF,YAAZ;YACD,CAVD,MAUO,IAAI/H,eAAe,CAACf,KAAD,CAAnB,EAA4B;cACjC,IAAI,KAAK6I,cAAT,EAAyB;gBACvB,OAAOjH,oBAAoB,CAAC5B,KAAD,CAA3B;cACD;;cACD,MAAMiJ,QAAoB,GAAG,EAA7B;;cACA,KAAK,MAAM,CAACzI,GAAD,EAAMU,UAAN,CAAX,IAAgCF,MAAM,CAACO,OAAP,CAAevB,KAAf,CAAhC,EAAuD;gBACrD,IACE,CAAC,IAAAmB,yBAAA,EAAcD,UAAd,CAAD,IACA,EAAEV,GAAG,KAAK,WAAR,IAAuBG,sBAAsB,CAACO,UAAD,CAA/C,CAFF,EAGE;kBACA+H,QAAQ,CAACzI,GAAD,CAAR,GAAgBU,UAAhB;gBACD;cACF;;cACD,OAAO+H,QAAP;YACD,CAdM,MAcA;cACL,OAAOjJ,KAAP;YACD;UACF,CA5BkC,CAAnC;UA6BAqB,KAAK,CAACb,GAAD,CAAL,GAAa0I,uBAAA,CAAWC,OAAX,CAAmBP,cAAnB,CAAb;QACD,CAjCD,MAiCO,IAAIpI,GAAG,KAAK,eAAZ,EAA6B;UAClC,MAAM4I,YAAY,GAAGV,UAAU,CAAClD,aAAhC;;UAGA,IAAI4D,YAAY,CAAC9B,OAAb,KAAyB5G,SAA7B,EAAwC;YACtCM,MAAM,CAACC,IAAP,CAAYmI,YAAY,CAAC9B,OAAb,CAAqBrI,KAAjC,EAAwCS,OAAxC,CAAiDc,GAAD,IAAS;cAAA;;cACvDa,KAAK,CAACb,GAAD,CAAL,4BAAa4I,YAAY,CAAC9B,OAA1B,0DAAa,sBAAsBrI,KAAtB,CAA4BuB,GAA5B,CAAb;cACA,yBAAA4I,YAAY,CAAC/I,QAAb,gFAAuB+G,GAAvB,CAA2B,IAA3B;YACD,CAHD;UAID;QACF,CAVM,MAUA,IACL7G,GAAG,CAAC,SAAD,EAAYtB,KAAZ,CAAH,IACAA,KAAK,CAAC8F,OAAN,YAAyBC,4BAFpB,EAGL;UACA,IAAI/F,KAAK,CAAC8F,OAAN,CAAcsE,UAAd,CAAyB1H,MAAzB,GAAkC,CAAtC,EAAyC;YACvC1C,KAAK,CAAC8F,OAAN,CAAcsE,UAAd,CAAyB3J,OAAzB,CAAkC4J,SAAD,IAAe;cAC9CjI,KAAK,CAACiI,SAAD,CAAL,GAAmB/I,GAAG,CAAC,WAAD,EAActB,KAAK,CAAC8F,OAApB,CAAH,GACd9F,KAAK,CAAC8F,OAAN,CAAcwE,SAAf,CACED,SADF,CADe,GAIfzK,aAJJ;YAKD,CAND;UAOD,CARD,MAQO;YACLwC,KAAK,CAACb,GAAD,CAAL,GAAa3B,aAAb;UACD;QACF,CAfM,MAeA,IAAI,IAAAsC,yBAAA,EAAclC,KAAd,CAAJ,EAA0B;UAC/B,IAAI,KAAK4J,cAAT,EAAyB;YACvBxH,KAAK,CAACb,GAAD,CAAL,GAAcvB,KAAD,CAA4BA,KAAzC;UACD;QACF,CAJM,MAIA,IACLuB,GAAG,KAAK,6BAAR,IACA,CAAC,IAAAgJ,iCAAA,GAFI,EAGL;UACAnI,KAAK,CAACb,GAAD,CAAL,GAAavB,KAAb;QACD;MACF;;MACD,OAAOoC,KAAP;IACD;;IAEDoI,MAAM,GAAG;MACP,MAAMpI,KAAK,GAAG,KAAKoH,uBAAL,CAA6B,KAAKpH,KAAlC,CAAd;;MACA,IAAI,IAAA0C,uBAAA,GAAJ,EAAc;QACZ1C,KAAK,CAAC2C,aAAN,GAAsB,KAAKA,aAA3B;MACD;;MAED,IAAI,KAAK6E,cAAT,EAAyB;QACvB,KAAKA,cAAL,GAAsB,KAAtB;MACD;;MAED,MAAMa,aAAa,GAAGvE,qBAAA,CAASwE,MAAT,CAAgB;QACpCC,GAAG,EAAE,EAD+B;QAEpCC,OAAO,EAAE;UAAEC,WAAW,EAAE;QAAf;MAF2B,CAAhB,CAAtB;;MAIA,oBACE,6BAAC,SAAD,eAAezI,KAAf;QAAsB,GAAG,EAAE,KAAK0I;MAAhC,GAAsDL,aAAtD,EADF;IAGD;;EAheD;;EAV4D,gBAQxDrH,iBARwD;;EA6e9DA,iBAAiB,CAAC2H,WAAlB,GAAiC,qBAC/BhI,SAAS,CAACgI,WAAV,IAAyBhI,SAAS,CAACqF,IAAnC,IAA2C,WAC5C,GAFD;EAIA,oBAAO/E,cAAA,CAAM2H,UAAN,CAA4B,CAAC5I,KAAD,EAAQuB,GAAR,KAAgB;IACjD,oBACE,6BAAC,iBAAD,eACMvB,KADN,EAEOuB,GAAG,KAAK,IAAR,GAAe,IAAf,GAAsB;MAAEF,YAAY,EAAEE;IAAhB,CAF7B,EADF;EAMD,CAPM,CAAP;AAQD"}
|