/// /// HybridBlurViewGroupManager.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.qmblurview.views import android.view.View import android.view.ViewGroup import com.facebook.react.uimanager.ReactStylesDiffMap import com.facebook.react.uimanager.StateWrapper import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ViewGroupManager import com.margelo.nitro.R.id.associated_hybrid_view_tag import com.margelo.nitro.views.RecyclableView import com.margelo.nitro.qmblurview.* /** * Represents the React Native `ViewManager` for the "BlurViewGroup" Nitro HybridView. */ open class HybridBlurViewGroupManager: ViewGroupManager() { init { if (RecyclableView::class.java.isAssignableFrom(HybridBlurViewGroup::class.java)) { // Enable view recycling super.setupViewRecycling() } } override fun getName(): String { return "BlurViewGroup" } override fun createViewInstance(reactContext: ThemedReactContext): ViewGroup { val hybridView = HybridBlurViewGroup(reactContext) val view = hybridView.view view.setTag(associated_hybrid_view_tag, hybridView) return view } override fun updateState(view: ViewGroup, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? { val hybridView = view.getTag(associated_hybrid_view_tag) as? HybridBlurViewGroup ?: throw Error("Couldn't find view $view in local views table!") // 1. Update each prop individually hybridView.beforeUpdate() HybridBlurViewGroupStateUpdater.updateViewProps(hybridView, stateWrapper) hybridView.afterUpdate() // 2. Continue in base View props return super.updateState(view, props, stateWrapper) } override fun addView(parent: ViewGroup, child: View, index: Int) { super.addView(parent, child, index) // print stack trace val stackTrace = Thread.currentThread().stackTrace val stackTraceString = stackTrace.joinToString("\n") { it.toString() } android.util.Log.d("HybridBlurViewGroupManager", "addView called. Stack trace:\n$stackTraceString") } protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: ViewGroup): ViewGroup? { super.prepareToRecycleView(reactContext, view) val hybridView = view.getTag(associated_hybrid_view_tag) as? HybridBlurViewGroup ?: return null @Suppress("USELESS_IS_CHECK") if (hybridView is RecyclableView) { // Recycle in it's implementation hybridView.prepareForRecycle() // Maybe update the view if it changed return hybridView.view } else { return null } } // override fun needsCustomLayoutForChildren(): Boolean { // return true // } }