#pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace reanimated::css { class CSSTransitionsRegistry : public UpdatesRegistry, public std::enable_shared_from_this { public: CSSTransitionsRegistry( const std::shared_ptr &staticPropsRegistry, const GetAnimationTimestampFunction &getCurrentTimestamp); bool isEmpty() const override; bool hasUpdates() const; void add(const std::shared_ptr &transition); void updateSettings(Tag viewTag, const PartialCSSTransitionConfig &config); void remove(Tag viewTag) override; void update(double timestamp); private: using Registry = std::unordered_map>; const GetAnimationTimestampFunction &getCurrentTimestamp_; const std::shared_ptr staticPropsRegistry_; Registry registry_; std::unordered_set runningTransitionTags_; DelayedItemsManager delayedTransitionsManager_; void activateDelayedTransitions(double timestamp); void scheduleOrActivateTransition( const std::shared_ptr &transition); PropsObserver createPropsObserver(Tag viewTag); void updateInUpdatesRegistry( const std::shared_ptr &transition, const folly::dynamic &updates); }; } // namespace reanimated::css