1*5f154df9Saleqsio #pragma once 2*5f154df9Saleqsio 3*5f154df9Saleqsio #include "ErrorHandler.h" 4*5f154df9Saleqsio #include "LayoutAnimationType.h" 5*5f154df9Saleqsio #include "Shareables.h" 6*5f154df9Saleqsio 7*5f154df9Saleqsio #include <jsi/jsi.h> 8*5f154df9Saleqsio #include <stdio.h> 9*5f154df9Saleqsio #include <functional> 10*5f154df9Saleqsio #include <memory> 11*5f154df9Saleqsio #include <mutex> 12*5f154df9Saleqsio #include <string> 13*5f154df9Saleqsio #include <unordered_map> 14*5f154df9Saleqsio #include <vector> 15*5f154df9Saleqsio 16*5f154df9Saleqsio namespace reanimated { 17*5f154df9Saleqsio 18*5f154df9Saleqsio using namespace facebook; 19*5f154df9Saleqsio 20*5f154df9Saleqsio class LayoutAnimationsManager { 21*5f154df9Saleqsio public: 22*5f154df9Saleqsio void configureAnimation( 23*5f154df9Saleqsio int tag, 24*5f154df9Saleqsio LayoutAnimationType type, 25*5f154df9Saleqsio const std::string &sharedTransitionTag, 26*5f154df9Saleqsio std::shared_ptr<Shareable> config); 27*5f154df9Saleqsio bool hasLayoutAnimation(int tag, LayoutAnimationType type); 28*5f154df9Saleqsio void startLayoutAnimation( 29*5f154df9Saleqsio jsi::Runtime &rt, 30*5f154df9Saleqsio int tag, 31*5f154df9Saleqsio LayoutAnimationType type, 32*5f154df9Saleqsio const jsi::Object &values); 33*5f154df9Saleqsio void clearLayoutAnimationConfig(int tag); 34*5f154df9Saleqsio void cancelLayoutAnimation( 35*5f154df9Saleqsio jsi::Runtime &rt, 36*5f154df9Saleqsio int tag, 37*5f154df9Saleqsio LayoutAnimationType type, 38*5f154df9Saleqsio bool cancelled /* = true */, 39*5f154df9Saleqsio bool removeView /* = true */); 40*5f154df9Saleqsio int findPrecedingViewTagForTransition(int tag); 41*5f154df9Saleqsio 42*5f154df9Saleqsio private: 43*5f154df9Saleqsio std::unordered_map<int, std::shared_ptr<Shareable>> &getConfigsForType( 44*5f154df9Saleqsio LayoutAnimationType type); 45*5f154df9Saleqsio 46*5f154df9Saleqsio std::unordered_map<int, std::shared_ptr<Shareable>> enteringAnimations_; 47*5f154df9Saleqsio std::unordered_map<int, std::shared_ptr<Shareable>> exitingAnimations_; 48*5f154df9Saleqsio std::unordered_map<int, std::shared_ptr<Shareable>> layoutAnimations_; 49*5f154df9Saleqsio std::unordered_map<int, std::shared_ptr<Shareable>> 50*5f154df9Saleqsio sharedTransitionAnimations_; 51*5f154df9Saleqsio std::unordered_map<std::string, std::vector<int>> sharedTransitionGroups_; 52*5f154df9Saleqsio std::unordered_map<int, std::string> viewTagToSharedTag_; 53*5f154df9Saleqsio mutable std::mutex 54*5f154df9Saleqsio animationsMutex_; // Protects `enteringAnimations_`, `exitingAnimations_`, 55*5f154df9Saleqsio // `layoutAnimations_` and `viewSharedValues_`. 56*5f154df9Saleqsio }; 57*5f154df9Saleqsio 58*5f154df9Saleqsio } // namespace reanimated 59