/// /// HybridFrameRendererViewManager.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.camera.views import android.view.View import com.facebook.react.uimanager.ReactStylesDiffMap import com.facebook.react.uimanager.SimpleViewManager import com.facebook.react.uimanager.StateWrapper import com.facebook.react.uimanager.ThemedReactContext import com.margelo.nitro.R.id.associated_hybrid_view_tag import com.margelo.nitro.views.RecyclableView import com.margelo.nitro.camera.* /** * Represents the React Native `ViewManager` for the "FrameRendererView" Nitro HybridView. */ public class HybridFrameRendererViewManager: SimpleViewManager() { init { if (RecyclableView::class.java.isAssignableFrom(HybridFrameRendererView::class.java)) { // Enable view recycling super.setupViewRecycling() } } override fun getName(): String { return "FrameRendererView" } override fun createViewInstance(reactContext: ThemedReactContext): View { val hybridView = HybridFrameRendererView(reactContext) val view = hybridView.view view.setTag(associated_hybrid_view_tag, hybridView) return view } override fun updateState(view: View, props: ReactStylesDiffMap, stateWrapper: StateWrapper): Any? { val hybridView = getHybridView(view) ?: throw Error("Couldn't find view $view in local views table!") // 1. Update each prop individually hybridView.beforeUpdate() HybridFrameRendererViewStateUpdater.updateViewProps(hybridView, stateWrapper) hybridView.afterUpdate() // 2. Continue in base View props return super.updateState(view, props, stateWrapper) } override fun onDropViewInstance(view: View) { val hybridView = getHybridView(view) hybridView?.onDropView() return super.onDropViewInstance(view) } protected override fun prepareToRecycleView(reactContext: ThemedReactContext, view: View): View? { super.prepareToRecycleView(reactContext, view) val hybridView = getHybridView(view) ?: 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 } } private fun getHybridView(view: View): HybridFrameRendererView? { return view.getTag(associated_hybrid_view_tag) as? HybridFrameRendererView } }